Supondo que temos duas contas da AWS: Account-A, Account-B e uma instância ec2 em execução na AccountA.
aws ec2 describe-instances
funciona como esperado para a própria conta da instância sem um arquivo ~/.aws/credentials
com uma função de instância.
Meu objetivo é executar aws ec2 describe-instances
para a Conta-B dessa instância.
O seguinte comando funciona e gera credenciais:
$ aws sts assume-role --role-arn arn:aws:iam::012345678901:role/accountb-role --role-session-name test
No entanto, isso não acontece:
$ aws ec2 describe-instances --profile AccountB
'aws_access_key_id'
~ / .aws / config
[default]
region = us-east-1
[profile AccountB]
role_arn = arn:aws:iam::012345678901:role/accountb-role
source_profile = default
Como mencionei, ~/.aws/credentials
não existe porque a instância usa uma função de instância para o IAM.
accountb-role Política de relação de confiança
{
"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"
}
]
}
política inline de instância
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1490625590000",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::012345678901:role/accountb-role"
]
}
]
}
A função accounta-role
instance e accountb-role
também têm a política de estoque ReadOnlyAccess
do IAM anexada.