Função de execução do AWS Lambda - AWS Lambda

Função de execução do AWS Lambda

A função de execução de uma função do AWS Lambda concede a ela permissão para acessar recursos e serviços da AWS. Você fornece essa função ao criar uma função, e o Lambda assume a função quando ela é invocada. É possível criar uma função de execução para desenvolvimento que tenha permissão para enviar logs ao Amazon CloudWatch e fazer upload dos dados de rastreamento no AWS X-Ray.

Como visualizar a função de execução de uma função

  1. Abra a página Functions (Funções) do console do Lambda.

  2. Escolha uma função.

  3. Escolha Permissions (Permissões).

  4. O resumo do recurso mostra os serviços e os recursos aos quais a função tem acesso. O exemplo a seguir mostra as permissões do CloudWatch Logs que o Lambda adiciona a uma função de execução quando ela é criada no console do Lambda.

    
          Uma função de execução no console do Lambda.
  5. Escolha um serviço no menu suspenso para ver as permissões relacionadas a ele.

Adicione ou remova permissões da função de execução de uma função a qualquer momento ou configure a função para usar uma diferente. Adicione permissões para quaisquer serviços que a função chame com o SDK da AWS e para serviços usados pelo Lambda para habilitar recursos opcionais.

Ao adicionar permissões à sua função, também atualize o código ou a configuração. Isso força as instâncias em execução da função, com credenciais desatualizadas, a serem encerradas e substituídas.

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

Por padrão, o Lambda cria uma função de execução com permissões mínimas quando você cria uma função no console do Lambda. Também é possível criar uma função de execução no console do IAM.

Como criar uma função de execução no console do IAM

  1. Abra a página Roles no console do IAM.

  2. Selecione Create role.

  3. Em Common use cases (Casos de uso comuns), selecione Lambda.

  4. Escolha Próximo: Permissões.

  5. Em Attach permissions policies (Anexar políticas de permissões), selecione as políticas gerenciadas AWSLambdaBasicExecutionRole e AWSXRayDaemonWriteAccess.

  6. Escolha Next: Tags (Próximo: tags).

  7. Selecione Next: Review.

  8. Em Role name (Nome da função), insira lambda-role.

  9. Selecione Create role (Criar função).

Para obter instruções detalhadas, consulte Criar uma função no Guia do usuário do IAM.

Gerenciar funções com a API do IAM

Uma função de execução é uma função do IAM que o Lambda tem permissão para assumir quando você invoca uma função. Para criar uma função de execução com a CLI da AWS, use o comando create-role.

$ aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json { "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

O trust-policy.json é um arquivo JSON no diretório atual que define a política de confiança da função. Essa política de confiança permite que o Lambda use as permissões da função para conceder ao diretor de serviços lambda.amazonaws.com as permissões para chamar a ação AssumeRole do AWS Security Token Service.

exemplo trust-policy.json

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

Também é possível especificar a política de confiança em linha. Os requisitos para citações de escape na string JSON variam de acordo com o shell.

$ aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

Para adicionar permissões à função, use o comando attach-policy-to-role. Primeiramente, adicione a política gerenciada AWSLambdaBasicExecutionRole.

$ aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Políticas gerenciadas para recursos do Lambda

As seguintes políticas gerenciadas oferecem permissões obrigatórias para que se usem os recursos do Lambda:

  • AWSLambdaBasicExecutionRole – permissão para fazer upload dos registros para o CloudWatch.

  • AWSLambdaKinesisExecutionRole – permissão para ler eventos de um stream de dados ou um consumidor do Amazon Kinesis.

  • AWSLambdaDynamoDBExecutionRole – permissão para ler registros de um stream do Amazon DynamoDB.

  • AWSLambdaSQSQueueExecutionRole – permissão para ler uma mensagem de uma fila do Amazon Simple Queue Service (Amazon SQS).

  • AWSLambdaVPCAccessExecutionRole – permissão para gerenciar interfaces de rede elástica a fim de conectar a função a uma VPC.

  • AWSXRayDaemonWriteAccess – permissão para fazer upload dos dados de rastreamento no X-Ray.

Para alguns recursos, o console do Lambda tenta adicionar permissões ausentes à sua função de execução em uma política gerenciada pelo cliente. Essas políticas podem tornar-se numerosas. Adicione as políticas gerenciadas relevantes à função de execução antes de habilitar os recursos para evitar a criação de políticas adicionais.

Quando você usa um mapeamento de origem do evento para invocar a função, o Lambda usa a função de execução a fim de ler dados de eventos. Por exemplo, um mapeamento de origem do evento para o Amazon Kinesis lê eventos de um fluxo de dados e os envia para a função em lotes. Use mapeamentos de origem do evento com os seguintes serviços:

Serviços dos quais o Lambda lê eventos

Além das políticas gerenciadas, o console do Lambda fornece modelos para criar uma política personalizada com as permissões relacionadas a outros casos de uso adicionais. Ao criar uma função no console do Lambda, opte por criar uma nova função de execução com permissões de um ou mais modelos. Esses modelos também são aplicados automaticamente quando você cria uma função a partir de um esquema, ou quando configura opções que exijam acesso a outros serviços. Os modelos de exemplo estão disponíveis no repositório do GitHub deste guia.