Como posso conceder acesso a um bucket do Amazon S3 para minha instância do Amazon EC2?

Última atualização: 2021-07-22

Não consigo acessar um bucket do Amazon Simple Storage Service (Amazon S3) da minha instância do Amazon Elastic Compute Cloud (Amazon EC2). Como posso habilitar o acesso de leitura/gravação a buckets do S3 a partir de uma instância do EC2?

Descrição breve

Para se conectar a buckets do S3 a partir de instâncias do EC2, você deve fazer o seguinte:

1.    Crie uma função de perfil do AWS Identity and Access Management (IAM) que conceda acesso ao Amazon S3.

2.    Anexe o perfil da instância do IAM à instância.

3.    Valide permissões no bucket do S3.

4.    Valide a conectividade de rede da instância do EC2 com o Amazon S3.

3.    Valide o acesso a buckets do S3.

Resolução

Criar um perfil de instância do IAM que conceda acesso ao Amazon S3

1.    Abra o console do IAM.

2.    Escolha Roles (Funções) e depois Create role (Criar função).

3.    Selecione AWS Service (Serviço da AWS) e escolha EC2.

Observação: criar uma função do IAM a partir do console com o EC2 selecionado como entidade confiável cria automaticamente um perfil de instância do IAM com o mesmo nome da função. No entanto, se a função for criada usando a AWS Command Line Interface (AWS CLI) ou a partir da API, um perfil de instância não será criado automaticamente. Para obter mais informações, consulte Criei uma função do IAM, mas ela não aparece na lista suspensa quando executo uma instância. O que faço?

4.    Clique em Next: Permissions (Próximo: Permissões).

5.    Crie uma política personalizada que forneça as permissões mínimas necessárias para acessar o bucket do S3. Para obter instruções sobre como criar políticas personalizadas, consulte Escrever políticas do IAM: como conceder acesso a um bucket do Amazon S3 e Gerenciamento de identidade e acesso no Amazon S3.

Observação: criar uma política com as permissões mínimas necessárias é uma prática recomendada de segurança. No entanto, para permitir o acesso do EC2 a todos os buckets do Amazon S3, você pode usar a política do IAM gerenciada AmazonS3ReadOnlyAccess ou AmazonS3FullAccess.

6.    Selecione Next: Tags (Próximo: Etiquetas) e depois Next: Review (Próximo: Revisar).

7.    Insira um nome de função em Role name e selecione Create role (Criar função).

Anexar o perfil da instância do IAM à instância do EC2

1.    Abra o console do Amazon EC2.

2.    Escolha Instances (Instâncias).

3.    Selecione a instância à qual você deseja anexar a função do IAM.

4.    Escolha a aba Actions (Ações), Security (Segurança) e depois Modify IAM role (Modificar função do IAM).

5.    Selecione a função do IAM que você acabou de criar e depois escolha Save (Salvar). A função do IAM é atribuída à sua instância do EC2.

Validar permissões no bucket do S3

1.    Abra o console do Amazon S3.

2.    Selecione o bucket S3 cuja política você deseja verificar.

3.    Escolha Permissions (Permissões).

4.    Escolha Bucket Policy (Política de bucket).

5.    Procure instruções com Effect: Deny (Efeito: negar).

6.    Na política do bucket, edite ou remova quaisquer instruções Effect: Deny (Efeito: negar) que estejam negando o acesso ao seu bucket para o perfil da instância do IAM. Para obter instruções sobre a edição de políticas, consulte Editar políticas do IAM.

Validar a conectividade de rede da instância do EC2 com o Amazon S3

Verifique se a instância do EC2 tem conectividade com endpoints do S3.

A instância deve ser uma das seguintes:

Instância do EC2 com um endereço IP público e uma entrada de tabela de rotas com a rota padrão apontando para um gateway da Internet.
Instância privada do EC2 com uma rota padrão por meio de um gateway de NAT.
Instância do EC2 privada com conectividade com o Amazon S3 usando um endpoint de VPC de gateway.

Validar o acesso a buckets do S3

1.    Instale a CLI da AWS.

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.

2.    Verifique o acesso aos buckets do S3 executando o seguinte comando. Substitua DOC-EXAMPLE-BUCKET pelo nome do bucket do S3.

aws s3 ls s3://DOC-EXAMPLE-BUCKET

Observação: objetos do S3 criptografados com uma chave do AWS Key Management Service (AWS KMS) devem ter permissões kms: Decrypt concedidas no seguinte:
A função do IAM anexada à instância.
A política de chaves do KMS.

Se essas permissões não forem concedidas, você não poderá copiar ou fazer download dos objetos do S3. Para mais informações, consulte Preciso especificar a chave do AWS KMS quando faço download de um objeto do Amazon S3 criptografado pelo KMS?


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?