AWS Java SDK:来自 EC2 实例配置文件的 AssumeRole?

AWS Java SDK: AssumeRole from EC2 instance profile?

我在 EC2 实例上有一个应用程序 运行,它的 IAM 配置文件在其所在的帐户上描述了 EC2。它还具有另一个帐户的 AssumeRole(该角色授予 EC2 描述)。这是我在主账户上的 IAM 角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Sid": "{SID}",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::{ACCT_NUM}:role/{ROLE_NAME}"
            ]
        }
    ]
}

这是辅助账户的 IAM 角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        }
     ]
}

基本上我需要做的是从两个账户获取 EC2 实例。使用当前的 SDK 可以吗?目前我只从主账户获取实例。

是的,您可以使用 SDK。使用主(默认)账户的凭据列出 EC2 实例后,您可以使用 STS 调用 AssumeRole() 以获取跨账户的凭据。然后列出那些 EC2 实例。

添加 ec2:AssumeRole 不会在帐户之间自动传播命令。

您必须为要从中提取实例信息的每个 AWS 账户和区域调用一次 ec2:DescribeInstances

您的 EC2 IAM 角色授予您访问主账户的权限。仅使用这些凭据调用 ec2:DescribeInstances 将单独为您提供该帐户的 EC2 实例信息。

接下来,您需要调用 ec2:AssumeRole 来接收辅助帐户的新凭据。一旦你有了这些,你就可以使用它们来为辅助帐户调用 ec2:DescribeInstances