Como permito que minha função de execução Lambda acesse meu bucket do Amazon S3?

Data da última atualização: 20-07-2021

Quero que minha função do AWS Lambda seja capaz de acessar meu bucket do Amazon Simple Storage Service (Amazon S3). Como posso fazer isso?

Descrição breve

Para conceder à sua função Lambda acesso a um bucket do Amazon S3 na mesma conta da AWS, faça o seguinte:

1.    Crie uma função do AWS Identity and Access Management (IAM) para a função Lambda que também concede acesso ao bucket do S3.

2.    Configure a função do IAM como a função de execução da função Lambda.

3.    Verifique se a política do bucket do S3 não nega explicitamente o acesso à sua função Lambda ou à sua função de execução.

Importante: se o seu bucket do S3 e a função do IAM da função estiverem em contas diferentes, você também deverá conceder as permissões necessárias na política do bucket do S3. Para obter mais informações, consulte Como posso oferecer acesso entre contas para objetos que estão em buckets do Amazon S3?

Resolução

Crie uma função do IAM para a função Lambda que também concede acesso ao bucket do S3.

1.    Siga as etapas em Criar uma função de execução no console do IAM.

2.    Na lista de funções do IAM, escolha a função que você acabou de criar.

3.    Na guia Permissions (Permissões), escolha a opção Add inline policy (Adicionar política em linha) .

4.    Clique na guia JSON.

5.    Insira uma política do IAM baseada em recursos que conceda acesso ao seu bucket do S3. Para obter mais informações, consulte Usar políticas baseadas em recursos para o AWS Lambda.

Exemplo de política do IAM que concede acesso a um bucket do S3 específico

Importante: substitua “arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*” pelo nome do recurso da Amazon (ARN) do bucket do S3.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

6.    Escolha Review Policy (Revisar política).

7.    Para Name (Nome), insira um nome para a sua política.

8.    Escolha Create policy (Criar política).

Configure a função do IAM como a função de execução da função Lambda

1.    Abra o console do Lambda.

2.    Exclua a função Lambda.

3.    Em Execution role (Função de execução), para Existing role (Função existente), selecione a função do IAM que você criou.

4.    Escolha Save (Salvar).

Verifique se a política do bucket do S3 não nega explicitamente o acesso à sua função Lambda ou à sua função de execução

Para revisar ou editar sua política do bucket S3, siga as instruções em Adicionar uma política de bucket usando o console do Amazon S3.

Importante: se o seu bucket do S3 e a função do IAM da função estiverem em contas diferentes, você também deverá conceder explicitamente as permissões necessárias na política de bucket do S3. Para obter mais informações, consulte Como posso oferecer acesso entre contas para objetos que estão em buckets do Amazon S3?

Exemplo de política de bucket do S3 do IAM que concede a uma função de execução Lambda acesso entre contas a um bucket do S3

Importante: substitua “arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*” pelo ARN do bucket do S3. Substitua “arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012” pelo ARN da função de execução Lambda.

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
        ]
      }
    }
  ]
}

AWS Policy Generator