Como faço para permitir que minha função do Lambda acesse meu bucket do Amazon S3?

4 minuto de leitura
0

Quero que minha função do AWS Lambda acesse meu bucket do Amazon Simple Storage Service (Amazon S3).

Breve descrição

Para conceder à sua função do Lambda acesso a um bucket do Amazon S3 na mesma conta da AWS, conclua as seguintes etapas:

  1. Crie um perfil do AWS Identity and Access Management (IAM) para a função do Lambda que também conceda acesso ao bucket S3.
  2. Configure o perfil do IAM como o Perfil de execução da função do Lambda.
  3. Verificar se a política de bucket do S3 não nega explicitamente o acesso à função do Lambda ou ao seu perfil de execução.

Importante: se o bucket do S3 e o perfil do IAM da função estiverem em contas diferentes, conceda as permissões necessárias na política do bucket do S3. Para obter mais informações, consulte Como oferecer acesso entre contas a objetos que estão em buckets do Amazon S3?

Resolução

Criar um perfil do IAM para a função do Lambda que também conceda acesso ao bucket S3

Para criar um perfil do IAM para a função do Lambda que também concede acesso ao bucket do S3, conclua as seguintes etapas:

  1. Criar uma função de execução no console do IAM.

  2. Na lista de perfis do IAM, escolha aquele que você criou.

  3. Para que a política de confiança permita que o Lambda assuma o perfil de execução, adicione lambda.amazonaws.com como um serviço confiável. Escolha a guia Relações de confiança e selecione Editar política de confiança.

  4. Substitua as variáveis na política pelas seguintes variáveis:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
         "Effect": "Allow",
         "Principal": {
         "Service": "lambda.amazonaws.com"
        },
      "Action": "sts:AssumeRole"
      }
     ]
    }
  5. Escolha Atualizar política.

  6. Na guia Permissões, escolha Adicionar política em linha.

  7. Escolha a guia JSON.

  8. 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 recurso para o Lambda. O exemplo de política do IAM a seguir concede acesso a um bucket específico do Amazon S3 com permissões Get. Para acessar os objetos dentro do bucket do Amazon S3, especifique o caminho correto ou use um caractere curinga ("*"). Para obter mais informações, consulte Writing IAM Policies: how to grant access to an Amazon S3 bucket.

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

    Observação: substitua "arn:aws:s3:::EXAMPLE-BUCKET" pelo ARN do seu bucket do S3. Se o objeto for criptografado com uma chave do AWS Key Management Service (AWS KMS), você deverá fornecer permissões adicionais. Para obter mais informações, consulte My Amazon S3 bucket has default encryption using a custom AWS KMS key. Como posso permitir que os usuários façam download e upload para o bucket?

  9. Escolha Revisar política.

  10. Em Nome, insira um nome para a política.

  11. Selecione Criar política.

Configurar o perfil do IAM como o Perfil de execução da função do Lambda

Para configurar o perfil do IAM como o perfil de execução da função do Lambda, conclua as seguintes etapas:

  1. Abra o console do Lambda.
  2. Escolha sua função do Lambda.
  3. Em Perfil de execução, para Perfil existente, selecione o perfil do IAM que você criou.
  4. Escolha Salvar.

Verificar se a política de bucket do S3 não nega explicitamente o acesso à função do Lambda ou ao seu perfil de execução

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

O exemplo a seguir de uma política do IAM concede acesso entre contas a um bucket do S3 para um perfil de execução do Lambda:

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

Observação: substitua "arn:aws:s3:::EXAMPLE-BUCKET" pwlo ARN do seu bucket S3 e "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012" pelo ARN do seu perfil de execução do Lambda.

Informações relacionadas

Gerador de políticas da AWS