Ir para o conteúdo

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 (AWS IAM) para a função do Lambda que também conceda acesso ao bucket do Amazon S3.
  2. Configure o perfil do IAM como o perfil de execução da função do Lambda.
  3. Verifique se a política de bucket do Amazon S3 não nega explicitamente o acesso à função do Lambda ou ao seu perfil de execução.

Importante: se o bucket do Amazon 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 Amazon S3. Para mais informações, consulte Como conceder 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 do Amazon S3

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

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

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

  3. Para configurar a política de confiança para permitir 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 bucket do Amazon S3. Para mais informações, consulte Uso de políticas baseadas em recursos 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 mais informações, consulte Writing IAM Policies: how to grant access to an Amazon S3 bucket (Como escrever políticas do IAM: como conceder acesso a um bucket do Amazon S3).

    {
      "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 nome do recurso da Amazon (ARN) dos seus buckets do Amazon S3. Se você criptografou o objeto com uma chave do AWS Key Management Service (AWS KMS), também deverá fornecer as permissões necessárias. Para mais informações, consulte How do I allow users to download from and upload to an Amazon S3 bucket that I encrypted with a customer managed AWS KMS key? (Como eu permito que os usuários baixem e façam o upload para um bucket do Amazon S3 que eu criptografei com uma chave do AWS KMS gerenciada pelo cliente?)

  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, em Perfil existente, selecione o perfil do IAM que você criou.
  4. Escolha Salvar.

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

Use o console do Amazon S3 para revisar a política de bucket do Amazon S3. Verifique se sua política permite acesso à sua função do Lambda e ao seu perfil de execução.

O exemplo a seguir de uma política do IAM concede acesso entre contas a um bucket do Amazon 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" pelo ARN do seu bucket do Amazon 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

AWS OFICIALAtualizada há 5 meses