Como posso conceder à minha instância do Amazon EC2 acesso a um bucket do Amazon S3 em outra conta da AWS?
Quero usar uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para acessar meu bucket do Amazon Simple Storage Service (Amazon S3) em outra conta.
Resolução
Observação: as etapas para conceder a uma instância do Amazon EC2 acesso a um bucket do Amazon S3 são semelhantes às etapas para conceder acesso aos recursos do AWS em outra conta.
Conclua as etapas a seguir para conceder a uma instância na conta A acesso a um bucket S3 na conta B.
Na Conta B, crie um perfil do IAM
Para criar um perfil de gerenciamento de identidade e acesso (IAM) na conta B, conclua as etapas a seguir:
- Use a conta B para fazer login no Console de Gerenciamento da AWS.
- Abra o console do IAM.
- No painel de navegação, escolha Perfis e depois Criar perfil.
- Para Tipo de entidade confiável, escolha Conta da AWS.
- Selecione Outra conta da AWS e, em seguida, insira o ID da conta A.
- Escolha Avançar.
- Anexe uma política de IAM à função que delega acesso ao Amazon S3 e, em seguida, selecione Avançar. Por exemplo, a política de IAM a seguir concede a s3:GetObject acesso a objetos armazenados no bucket:
Observação: modifique a política de IAM com base nas permissões em nível de objeto e de bucket do Amazon S3 que são necessárias para o seu caso de uso.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }
- Em Nome da função, insira um nome para a função.
- (Opcional) Adicione tags à função.
- Selecione Criar perfil.
Na conta B, localize o ARN do perfil do IAM
Para localizar o ARN do perfil do IAM, conclua as etapas a seguir:
- No painel de navegação do console do IAM, escolha Perfis.
- Escolha o perfil do IAM que você criou.
- Anote o valor listado para o ARN do perfil.
Na conta A, crie outra função e anexe-a à instância
Para criar outro perfil de instância da Conta A e anexá-lo à instância, conclua as etapas a seguir:
- Use a conta A para fazer login no Console de Gerenciamento da AWS.
- Abra o console do IAM.
- No painel de navegação, escolha Perfis e depois Criar perfil.
- Em Tipo de entidade confiável, selecione Serviço da AWS.
- Em Serviço ou caso de uso, escolha EC2 e, em seguida, selecione seu caso de uso.
- Escolha Avançar.
- Na página Adicionar permissões, selecione Avançar.
- Em Nome da função, insira um nome para a função.
- (Opcional) Adicione tags à função.
- Selecione Criar perfil.
- Na lista de perfis, selecione o perfil criado.
- Em Adicionar permissões, selecione Criar política em linha.
- Em Editor de políticas, selecione JSON e, em seguida, insira a seguinte política:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111111111111:role/ROLENAME" }] }
Observação: em seguida, substitua arn:aws:iam::111111111111:role/ROLENAME pelo ARN do perfil do IAM que você criou na Conta B. Escolha Avançar. Em Name, insira um nome para a política e, em seguida, selecione Criar política. Anexe o perfil do IAM à instância que você usa para acessar o bucket do Amazon S3.
Na instância do Amazon EC2, crie um perfil para o perfil no arquivo de configuração da CLI
Observação: se você usar o SSH e o Session Manager, um recurso do AWS Systems Manager, para se conectar às suas instâncias, deverá executar essas etapas para o usuário ec2 e o usuário ssm.
Para criar um perfil para o perfil no arquivo de configuração da CLI a partir da instância, conclua as etapas a seguir:
-
Conecte-se à instância. Para obter mais informações, consulte Conecte-se à sua instância do Linux ou Conecte-se à instância do Windows.
-
Para determinar se o diretório já tem uma pasta chamada ~/.aws, execute o seguinte comando ls para listar o diretório da instância:
ls -l ~/.aws
Se você encontrar a pasta ~/.aws, vá para a próxima etapa. Se você não encontrar uma pasta ~/.aws, execute o seguinte comando mkdir para criar a pasta:
mkdir ~/.aws/
-
Na pasta ~/.aws, use um editor de texto para criar um arquivo. Nomeie o arquivo config.
-
No arquivo, insira o texto a seguir:
[profile enterprofilename] role_arn = arn:aws:iam::111111111111:role/ROLENAME credential_source = Ec2InstanceMetadata
Observação: substitua enterprofilename pelo seu valor. Em seguida, substitua arn:aws:iam::111111111111:role/ROLENAME pelo ARN do perfil que você criou na Conta B.
-
Salve o arquivo.
Verifique se o perfil da instância pode assumir o perfil
Para verificar se a função de sua instância pode assumir a função na Conta B, conecte-se à instância e execute o seguinte comando:
$aws sts get-caller-identity --profile profilename
Observação: substitua profilename pelo nome do perfil que você anexou à instância.
O comando retorna uma resposta semelhante à seguinte:
"Account": "11111111111", "UserId": "AROAEXAMPLEID:sessionName", "Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"
Confirme se o valor de “Arn” corresponde ao ARN do perfil que você criou na Conta B.
Verifique o acesso ao bucket do Amazon S3
Para verificar se sua instância pode acessar o bucket S3, conecte-se à instância e execute o seguinte comando list:
aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename
Observação: substitua profilename pelo nome do perfil que você anexou à instância.
Se a sua instância puder acessar o bucket com êxito, você receberá uma resposta semelhante à seguinte:
PRE Hello/ 2018-08-15 16:16:51 89 index.html
Informações relacionadas
Tutorial do IAM: Delegue acesso entre contas da AWS usando perfis do IAM
Vídeos relacionados


Conteúdo relevante
- feita há 11 diaslg...
- feita há 15 diaslg...
- feita há 4 diaslg...
- Resposta aceitafeita há 4 meseslg...
- AWS OFICIALAtualizada há 9 meses
- AWS OFICIALAtualizada há 3 meses
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 7 meses