如何为不同的帐户执行 aws ec2 describe-instances

如何为不同的帐户执行 aws ec2 describe-instances

假设我们有两个 AWS 账户:Account-A、Account-B 和在 AccountA 上运行的 ec2 实例。

aws ec2 describe-instances~/.aws/credentials对于没有具有实例角色的文件的实例自己的帐户,它可以按预期工作。

我的目标是从这个实例中竞选aws ec2 describe-instances帐户 B。

以下命令有效并输出凭证:

$ aws sts assume-role --role-arn arn:aws:iam::012345678901:role/accountb-role --role-session-name test

然而,这并不:

$ aws ec2 describe-instances --profile AccountB

'aws_access_key_id'

~/.aws/配置

[default]
region = us-east-1

[profile AccountB]
role_arn = arn:aws:iam::012345678901:role/accountb-role
source_profile = default

正如我提到的,~/.aws/credentials由于实例使用 IAM 的实例角色,因此不存在。

accountb-role 信任关系策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::012345678900:role/accounta-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

实例内联策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1490625590000",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::012345678901:role/accountb-role"
            ]
        }
    ]
}

accounta-role实例角色和附加的accountb-role股票IAM 策略都ReadOnlyAccess

答案1

如果仍然有人对答案感兴趣,您必须保存 aws 凭证才能在这些调用之间使用 AccountB:

aws sts assume-role --role-arn arn:aws:iam::012345678901:role/accountb-role --role-session-name test

<< 在此处保存 aws_access_key_id、aws_secret_access_key、AWS_SESSION_TOKEN>>

然后你打电话

aws configure --profile AccountB 

确保您已设置它们。此外,AWS_SESSION_TOKEN 是否会在一段时间后过期

aws ec2 describe-instances --profile AccountB

本文详细解释

答案2

在您的 IAM 面板中,还可以授予跨账户 IAM 用户访问权限,这正是您正在寻找的。

http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

相关内容