Amazon web services AWS代码构建列出其他帐户的s3存储桶
我的代码构建位于帐户A上,s3存储桶位于帐户B上。我试图在帐户B上设置受信任的IAM STS角色,并在帐户a上设置策略,以包括帐户BIAM角色,并将此策略附加到我的代码构建服务角色。但是,我的代码构建仍然显示s3上的bucket。我在这里做了什么或配置了什么错误吗 在账户B上具有信任关系的角色Amazon web services AWS代码构建列出其他帐户的s3存储桶,amazon-web-services,amazon-s3,aws-codebuild,Amazon Web Services,Amazon S3,Aws Codebuild,我的代码构建位于帐户A上,s3存储桶位于帐户B上。我试图在帐户B上设置受信任的IAM STS角色,并在帐户a上设置策略,以包括帐户BIAM角色,并将此策略附加到我的代码构建服务角色。但是,我的代码构建仍然显示s3上的bucket。我在这里做了什么或配置了什么错误吗 在账户B上具有信任关系的角色 { "Version": "2012-10-17", "Statement": [ { "Effect&q
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Account:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
账户A的保单
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::Account B:role/testcli"
}
]
}
代码构建规范yml
version: 0.2
env:
variables:
TF_VERSION: "0.12.28"
phases:
install:
commands:
# install required binary
- echo test
pre_build:
commands:
- echo print s3 buckets
- aws s3 ls
post_build:
commands:
- echo test1
假设您的代码构建(CB)拥有sts:AssumeRole
的权限,那么在buildspec.yml
中,您必须明确地承担Acc B中的角色
有两种方法可以做到这一点
- “手动”调用您的
。调用将返回一组临时凭据。然后,可以使用获得的凭据从CB在Acc B中执行AWS CLI命令buildspec.yml
- 如图所示或在CB容器中设置AWS CLI凭据文件以承担角色
在这两种情况下,CB服务角色都需要
sts:AssumeRole
权限。您能提供更多详细信息吗?确切的策略、iam角色、buildspec.yml?@Marcin用请求的信息更新了问题您想从代码构建访问Acc B中的特定存储桶吗?如果是,那么您可以使用bucket策略来启用它。@Marcin我认为在bucket中添加策略可能会起作用,但如果我有10个帐户访问该特定bucket,我必须在有新帐户添加时更新bucket策略。请参见。然后,您必须在`buildspec.yml中显式地承担角色。我可以回答一个额外的细节。我得到一个``错误发生了一个错误(InvalidAccessKeyId)调用ListBucket操作时:您提供的AWS访问密钥Id在我们的记录中不存在。``修改buildspec.yml以使用sts:Assumerole
pre\u build:commands:-echo print s3 bucket-AWS sts-should-role arn:AWS:iam::Account B:role/testcli-角色会话名称testx>cred.json-s=$(jq.Credentials.AccessKeyId'cred.json)-y=$(jq.Credentials.SecretAccessKey'cred.json)-z=$(jq.Credentials.SessionToken'cred.json)-导出AWS\u ACCESS\u KEY\u ID=$s-导出AWS\u SECRET\u ACCESS\u KEY=$y-导出AWS\u SESSION\u TOKEN=$z-AWS s3 ls-echo$y
调用的buildspec的一部分sts:Assumerole
@patrick你能用新信息编辑这个问题吗?我解决了问题,在解析accessid和secretkey时,有一些引号必须被修剪。我可以得到帐户B上的存储桶列表