代码之家  ›  专栏  ›  技术社区  ›  Loaf

假定AWS角色不用于将来的CLI命令

  •  1
  • Loaf  · 技术社区  · 7 年前

    我试图在一个码头集装箱中扮演一个角色,但这个角色似乎并没有坚持下去。下面是的输出 aws sts assume-role 然后 aws sts get-caller-identity

    jenkins@0d4794bcdd62:~/.aws$ aws sts get-caller-identity
    {
        "UserId": "ABCDEFG1234567:i-01234546789abc",
        "Arn": "arn:aws:sts::555555555555:assumed-role/jenkins-masterRole/i-01234546789abc",
        "Account": "555555555555"
    }
    jenkins@0d4794bcdd62:~/.aws$ aws sts assume-role --role-arn arn:aws:iam::555555555555:role/ec2/CloudFormationRole --role-session-name "test-session-name"
    {
        "Credentials": {
            "Expiration": "2019-01-28T16:37:04Z",
            "SessionToken": "[redacted]",
            "AccessKeyId": "[redacted]",
            "SecretAccessKey": "[redacted]"
        },
        "AssumedRoleUser": {
            "AssumedRoleId": "[redacted]:test-session-name",
            "Arn": "arn:aws:sts::5555555555555:assumed-role/CloudFormationRole/test-session-name"
        }
    }
    jenkins@0d4794bcdd62:~/.aws$ aws sts get-caller-identity
    {
        "Account": "555555555555",
        "UserId": "ABCDEFG1234567:i-01234546789abc",
        "Arn": "arn:aws:sts::555555555555:assumed-role/jenkins-masterRole/i-01234546789abc"
    }
    

    正如您所看到的,AWS STS假定角色是有效的,但它似乎没有被应用。以下是我的~/.aws/config文件的内容

    jenkins@0d4794bcdd62:~/.aws$ cat ~/.aws/config
    [default]
    region = us-east-1
    

    除了 AWS_CONFIG_FILE=~/.aws/config . 我本来没有设置,但我在测试时就设置了。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Sébastien Stormacq    7 年前

    打电话 assume-role 不会更改AWS CLI的配置。AWS CLI正在使用存储在 ~/.aws/credentials 打电话。返回的那些 承担角色 不会自动复制到AWS CLI配置文件,它们只会显示在屏幕上。

    因此,解决问题的一个简单方法是将访问密钥、密钥和会话ID复制/粘贴到 ~/.aws/证书 当然,这样既不成比例,也不方便。有更好的方法。

    您可以在CLI中配置配置文件以使用所需的角色。假设您的基本身份具有承担角色的权限(根据您在问题中承担角色的调用进行此操作)

    这就是我如何配置 ~/.aws/config 从我的工作帐户获取临时访问我个人帐户的文件。当然,同样的技术也适用于同样的账户。

    [default]
    region=eu-west-1
    
    [profile perso]
    region=eu-west-1
    role_arn=arn:aws:iam::[redacted]:role/admin
    source_profile=default
    

    角色arn是您要在目标帐户中承担的角色。

    然后您可以简单地键入:

    aws --profile perso s3 ls

    切换角色。