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 Lambda é uma função do AWS Identity and Access Management (IAM) que concede à função permissão para acessar serviços e recursos 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 para 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 Funções do console do Lambda.

  2. Escolha uma função.

  3. Escolha Permissions (Permissões).

  4. Em Resource summary (Resumo do recurso), visualize os serviços e os recursos que a função pode acessar. 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 na lista suspensa 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 qualquer serviço que a função chama com o AWS SDK 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 (Funções) 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 da AWS 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 para um serviço da AWS (console) no Guia do usuário do IAM.

Gerenciar funções com a API do IAM

Para criar uma função de execução com a AWS Command Line Interface (AWS CLI), 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 da AWS para recursos do Lambda

As seguintes políticas gerenciadas da AWS fornecem permissões obrigatórias para usar os recursos do Lambda:

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

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

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

  • AWSLambdaMSKExecutionRole – permissão para ler registros de um cluster do Amazon Managed Streaming for Apache Kafka (Amazon MSK).

  • 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 virtual private cloud (VPC).

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

  • CloudWatchLambdaInsightsExecutionRolePolicy – permissão para gravar métricas de tempo de execução no CloudWatch Lambda Insights.

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. Para evitar a criação de políticas adicionais, adicione as políticas gerenciadas da AWS relevantes à função de execução antes de habilitar os recursos.

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 Kinesis lê eventos de um stream de dados e os envia para a função em lotes. Use mapeamentos de origem do evento com os seguintes serviços:

Além das políticas gerenciadas da AWS, o console do Lambda fornece modelos para criar uma política personalizada com as permissões para 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.