在Docker容器内传递AWS CodeBuild IAM角色[无法找到凭证]

问题描述 投票:0回答:1

在CodeBuild项目上配置的角色在运行时环境下工作正常,但是当我们从容器内部运行命令时,该角色不起作用,它说“无法找到凭据”。让我知道我们如何才能在容器内部立即使用该角色。

amazon-web-services amazon-iam aws-codepipeline aws-codebuild
1个回答
0
投票

您可以使用凭据源“ EcsContainer”无缝地扮演角色,而不必在buildspec.yml中导出新的凭据。

credential_source-用于获取初始假定角色调用的凭据的凭据提供程序。不能与source_profile一起提供此参数。有效值为:

  • 从环境变量中获取源凭证的环境。
  • Ec2InstanceMetadata以将EC2实例角色用作源凭据。
  • EcsContainer,将ECS容器凭据用作源凭据。

发件人:https://docs.aws.amazon.com/cli/latest/topic/config-vars.html

步骤:

步骤-0:创建一个新角色'arn:aws:iam :: 0000000000:role / RoleToBeAssumed'并附加所需的策略,以提供构建期间运行的命令所需的权限。

第1步:向您的CodeBuild服务角色添加sts:assumeRole权限。这是一个示例策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "sts:*",
            "Resource": "arn:aws:iam::0000000000:role/RoleToBeAssumed"
        }
    ]
}

第2步:配置构建容器,以使用凭据元数据作为承担角色的来源。这是一个buildspec示例:

version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 8
    commands:
      - aws sts get-caller-identity
      - mkdir ~/.aws/ && touch ~/.aws/config
      - echo "[profile buildprofile]" > ~/.aws/config
      - echo "role_arn = arn:aws:iam::0000000000:role/RoleToBeAssumed" >> ~/.aws/config
      - echo "credential_source = EcsContainer" >> ~/.aws/config
      - aws sts get-caller-identity --profile buildprofile
© www.soinside.com 2019 - 2024. All rights reserved.