我在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有关吗?目前我只从主账户中获取实例。
答案 0 :(得分:3)
添加ec2:AssumeRole
不会自动在帐户中传播命令。
您必须为每个AWS账户拨打ec2:DescribeInstances
一次&要从中提取实例信息的区域。
您对EC2的IAM角色可让您访问主帐户。仅使用这些凭据调用ec2:DescribeInstances
将仅为该帐户提供EC2实例信息。
接下来,您需要致电ec2:AssumeRole
以接收辅助帐户的新凭据。完成后,您可以使用这些来为ec2:DescribeInstances
拨打辅助帐户。
答案 1 :(得分:1)
是的,您可以使用SDK。使用主(默认)帐户的凭据列出EC2实例后,然后使用STS调用AssumeRole()以获取交叉帐户的凭据。然后列出那些EC2实例。