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

时间:2017-11-08 23:13:13

标签: amazon-web-services amazon-ec2 aws-sdk-java-2.0

我在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有关吗?目前我只从主账户中获取实例。

2 个答案:

答案 0 :(得分:3)

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

您必须为每个AWS账户拨打ec2:DescribeInstances一次&要从中提取实例信息的区域。

您对EC2的IAM角色可让您访问主帐户。仅使用这些凭据调用ec2:DescribeInstances将仅为该帐户提供EC2实例信息。

接下来,您需要致电ec2:AssumeRole以接收辅助帐户的新凭据。完成后,您可以使用这些来为ec2:DescribeInstances拨打辅助帐户。

答案 1 :(得分:1)

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