如何在AWS跨账号中让Account B的CodeBuild访问Account A的CodeCommit?
跨账号将Account A的CodeCommit作为Account B CodeBuild的源
以下是完成配置的具体步骤:
1. 给Account B的CodeBuild服务角色添加角色假设权限
Account B的CodeBuild服务角色需要被允许**扮演(Assume)**你在Account A创建的角色。为此,给该服务角色附加一条IAM权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::[AccountA账号ID]:role/[你在AccountA创建的角色名]" } ] }
2. 配置Account B的CodeBuild项目源
进入Account B的CodeBuild项目配置页面,在「源」模块完成以下操作:
- 源提供商选择CodeCommit
- 勾选「跨账号仓库」,输入Account A的账号ID,以及目标CodeCommit仓库的名称或ARN
- 在「源的访问凭据」下拉框中选择「使用现有服务角色的角色假设」,并填入Account A中那个角色的ARN
3. 验证Account A角色的信任策略(关键检查项)
确保你在Account A创建的角色的信任策略,已经授权Account B的CodeBuild服务角色可以扮演它。信任策略示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[AccountB账号ID]:role/service-role/[AccountB的CodeBuild服务角色名]" }, "Action": "sts:AssumeRole" } ] }
4. 测试构建
保存CodeBuild项目配置后,手动触发一次构建任务,验证是否能成功拉取Account A中CodeCommit仓库的代码。如果出现权限错误,优先检查两个角色的权限/信任策略是否匹配,以及ARN是否填写正确。
内容的提问来源于stack exchange,提问作者sshakya
相关产品推荐
相关产品推荐

