ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AWS CLI CodeArtifact put-domain-permissions-policy 实战:为 CodeArtifact 域附加资源权限策略

2026/9/15 13:15:29 拓冰建站 浏览量
AWS CLI CodeArtifact put-domain-permissions-policy 实战:为 CodeArtifact 域附加资源权限策略 AWS CLI CodeArtifact put-domain-permissions-policy 实战为 CodeArtifact 域附加资源权限策略【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli在 AWS CodeArtifact 中域Domain是组织包仓库Repository与包Package的顶层命名空间而资源权限策略决定了哪些主体Principal可以对该域及其下层资源执行哪些操作。本指南以 AWS CLI 的put-domain-permissions-policy命令为核心讲解如何通过一条命令将 JSON 格式的资源策略Resource Policy绑定到指定域并结合当前仓库中的服务模型与配套示例深入说明参数语义、策略文档结构、乐观锁Optimistic Locking机制以及相关的读取、删除配套命令。阅读完成后你将能够独立编写并部署一个可运行的 CodeArtifact 域级权限策略。命令概览将权限策略附加到域put-domain-permissions-policy命令的作用是设置PUT一个域上的资源策略以指定谁可以访问该域。其底层 HTTP 语义是向 CodeArtifact 服务的/v1/domain/permissions/policy端点发起PUT请求参见 service-2.json。该命令的必填参数有两个--domain域名称与--policy-document策略文档。官方示例文档 put-domain-permissions-policy.rst 给出了最基础的调用方式——将定义在policy.json文件中的权限策略附加到名为test-domain的域aws codeartifact put-domain-permissions-policy \ --domain test-domain \ --policy-document file://PATH/TO/policy.json命令执行成功后CodeArtifact 会返回被设置的资源策略对象包含资源 ARN、策略文档全文与当前修订号revision。示例输出如下{ policy: { resourceArn: arn:aws:codeartifact:region-id:111122223333:domain/test-domain, document: { ...policy document content...}, revision: MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx } }其中resourceArn该策略绑定的资源 ARN此处为域test-domain的完整 ARN格式为arn:aws:codeartifact:region:account-id:domain/domain-namedocument实际生效的策略文档JSON 字符串revision策略修订号是后续进行条件更新乐观锁的关键令牌。参数详解四个参数如何决定策略行为从服务模型 service-2.json 中的 PutDomainPermissionsPolicyRequest 可以看到该 API 共接收四个参数其中domain与policyDocument为必填项参数形状Shape必填说明--domainDomainName是要设置资源策略的域名称--policy-documentPolicyDocument是要设置为该域访问控制策略的合法 JSON 策略字符串--domain-ownerAccountId否拥有该域的 AWS 账户的 12 位账号不含短横线或空格在跨账户场景下用于指定目标域的所有者--policy-revisionPolicyRevision否当前资源策略的修订号用于乐观锁防止他人覆盖你对域资源策略的修改参数取值约束模型中对这些字符串类型给出了明确的长度与格式限制调用前值得留意DomainName长度 250必须匹配[a-z][a-z0-9\-]{0,48}[a-z0-9]即小写字母开头、以字母或数字结尾中间可含小写字母、数字与连字符参见 service-2.jsonPolicyDocument长度 17168 个字符必须匹配[\P{C}\s]即不含控制字符、可含空白参见 service-2.jsonPolicyRevision长度 1100不可含空白字符\S参见 service-2.json。编写策略文档一个可复用的 policy.json 模板--policy-document接受file://前缀加载本地文件也支持直接传入 JSON 字符串。下面是一个经过整理的、可直接复用的policy.json示例其策略内容与官方配套示例文档 get-domain-permissions-policy.rst 中展示的已生效策略保持一致并显式补全了Version字段{ Version: 2012-10-17, Statement: [ { Sid: BasicDomainPolicy, Action: [ codeartifact:GetDomainPermissionsPolicy, codeartifact:ListRepositoriesInDomain, codeartifact:GetAuthorizationToken, codeartifact:CreateRepository ], Effect: Allow, Resource: *, Principal: { AWS: arn:aws:iam::111122223333:root } } ] }写入本地文件后即可使用本文开头的命令完成附加aws codeartifact put-domain-permissions-policy \ --domain test-domain \ --policy-document file://policy.json该示例策略授予账户111122223333的 root 身份在test-domain上执行如下操作的权限读取域权限策略GetDomainPermissionsPolicy、列出域内仓库ListRepositoriesInDomain、获取授权令牌GetAuthorizationToken以及创建仓库CreateRepository。一个重要的设计语义调用者不会被自己锁在门外在模型文档注释中参见 service-2.json明确说明了一项关键的安全设计当你调用PutDomainPermissionsPolicy时评估权限时域上已有的资源策略会被忽略。这样做的目的是确保域的拥有者不会因为误写策略而把自己锁在域外导致无法再更新资源策略。这意味着即使当前域策略拒绝了你执行codeartifact:PutDomainPermissionsPolicy拥有者以及具备足够 IAM 权限的调用者仍可成功更新策略该 API 抛出的错误包括AccessDeniedException、ConflictException、InternalServerException、ResourceNotFoundException、ServiceQuotaExceededException、ThrottlingException与ValidationException其中ConflictException通常与乐观锁修订号不匹配相关。修订号与乐观锁安全更新策略的正确姿势示例输出中的revision字段并非装饰性信息它是乐观锁机制的核心令牌。其语义在 service-2.json 中有明确说明--policy-revision表示“要设置的资源策略的当前修订号”用于防止其他人覆盖你对域资源策略的修改。典型的更新流程是先调用get-domain-permissions-policy获取当前策略及其revision修改策略文档后在put-domain-permissions-policy中同时传入--policy-revision 上一步取得的 revision若此时策略已被他人修改CodeArtifact 会拒绝写入抛出冲突类错误从而避免基于过期版本覆盖最新策略。读取当前策略的命令如下完整示例见 get-domain-permissions-policy.rstaws codeartifact get-domain-permissions-policy \ --domain test-domain配套命令域的读取与删除与put配套的还有两个常用命令形成“写—读—删”的完整闭环读取域权限策略aws codeartifact get-domain-permissions-policy \ --domain test-domain删除域权限策略完整示例见 delete-domain-permissions-policy.rstaws codeartifact delete-domain-permissions-policy \ --domain test-domain此外权限策略同样作用于域下的单个仓库。若需要为仓库粒度设置策略可使用put-repository-permissions-policy配套示例见 put-repository-permissions-policy.rst其策略结构与域策略类似只是Resource指向仓库 ARN。结果对象结构返回的 ResourcePolicy 是什么put-domain-permissions-policy的响应体由PutDomainPermissionsPolicyResult定义参见 service-2.json其中唯一成员policy的类型是ResourcePolicy包含三个字段参见 service-2.jsonresourceArn与策略关联的资源 ARNrevision当前资源策略的修订号document以 JSON 格式呈现的资源策略。这一结构与命令输出一一对应正是前面示例输出中三个键值的来源。理解该结构有助于你在脚本中通过--query policy.revision等表达式提取修订号供后续条件更新或审计使用。适用前提与限制本指南基于当前仓库aws-cli内置的 CodeArtifact 服务模型服务 API 版本2018-09-22模型文件位于 awscli/botocore/data/codeartifact/2018-09-22/与官方示例文档编写命令行为以当前仓库版本为准使用前需确保已正确配置 AWS CLI 的凭证与区域region-id处替换为实际区域如us-east-1策略文档长度上限为 7168 字符超出将触发ValidationException域策略仅作用于域级资源仓库级访问控制需配合仓库策略put-repository-permissions-policy使用。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考