Como executar o aws ec2 describe-instances para diferentes contas

4

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.

    
por Lightbeard 29.03.2017 / 17:18

2 respostas

3

Se alguém ainda estiver interessado na resposta, você precisa salvar as credenciais aws para poder usar a Conta B entre essas chamadas:

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

< < salve aws_access_key_id, aws_secret_access_key, AWS_SESSION_TOKEN aqui > >

Você então liga

aws configure --profile AccountB 

para garantir que você os tenha configurado. também, o AWS_SESSION_TOKEN pode expirar após algum tempo

aws ec2 describe-instances --profile AccountB

Este artigo explica em detalhes

    
por 26.07.2017 / 03:17
0

No painel do IAM, também é possível conceder acesso a um usuário do IAM de várias contas, que é o que parece que você está procurando.

link

    
por 26.07.2017 / 04:33