Amazon web services AWS代码构建列出其他帐户的s3存储桶

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

我的代码构建位于帐户A上,s3存储桶位于帐户B上。我试图在帐户B上设置受信任的IAM STS角色,并在帐户a上设置策略,以包括帐户BIAM角色,并将此策略附加到我的代码构建服务角色。但是,我的代码构建仍然显示s3上的bucket。我在这里做了什么或配置了什么错误吗

在账户B上具有信任关系的角色

{
  "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中的角色

有两种方法可以做到这一点

  • “手动”调用您的
    buildspec.yml
    。调用将返回一组临时凭据。然后,可以使用获得的凭据从CB在Acc B中执行AWS CLI命令

  • 如图所示或在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上的存储桶列表