AWS Lambda
Guia do desenvolvedor

Modelo de permissões do AWS Lambda

Para que os aplicativos completamente baseados no AWS Lambda funcionem, você precisa gerenciar várias permissões. Por exemplo:

  • Para fontes de eventos, com a exceção dos serviços baseados em fluxo (Amazon Kinesis Data Streams e DynamoDB) ou filas do Amazon SQS, você deve conceder as permissões à fonte de evento para invocar sua função do AWS Lambda.

  • Para fontes de eventos baseadas em sondagem (fluxos do Amazon Kinesis Data Streams e do DynamoDB e filas do Amazon SQS), o AWS Lambda sonda o recurso em seu nome e lê os novos registros. Para habilitar isso, você precisa conceder permissões ao AWS Lambda para acessar os novos registros. Por sua vez, o AWS Lambda tentará invocar qualquer função do Lambda inscrita nessa fonte do evento para processar o evento.

  • Para qualquer outra fonte de evento que invocará sua função do Lambda diretamente, você deve conceder-lhes permissões para invocar sua função do AWS Lambda.

As seções a seguir descrevem o gerenciamento de permissões.

Gerenciar permissões: usando uma função do IAM (função de execução)

Cada função de Lambda tem uma função do IAM (função de execução) associada a ela. Você especifica a função do IAM ao criar sua função de Lambda. As permissões que você concede a essa função determinam o que o AWS Lambda pode fazer quando assume a função. Há dois tipos de permissões que você concede à função do IAM:

  • Se seu código de função do Lambda acessar outros recursos da AWS, como ler um objeto em um bucket do S3 ou gravar logs no CloudWatch Logs, você precisará conceder permissões para as ações relevantes do Amazon S3 e do CloudWatch à função.

     

  • Se a fonte do evento for baseada em sondagem (Amazon Kinesis Data Streams, DynamoDB, Amazon SQS), o AWS Lambda sondará esses recursos em seu nome. O AWS Lambda precisa de permissões para sondar o fluxo ou fila para ler novos registros. Para habilitar isso, você precisa conceder permissões ao AWS Lambda para acessar os novos registros. Por sua vez, o AWS Lambda tentará invocar qualquer função do Lambda inscrita nessa fonte do evento para processar o evento.

Para obter mais informações sobre funções do IAM, consulte Funções (delegação e federação) no Guia do usuário do IAM.

Importante

O usuário que cria a função do IAM está, na verdade, transferindo as permissões para o AWS Lambda assumir essa função. Isso exige que usuário tenha permissão para a ação iam:PassRole. Se você for um usuário com privilégios de administrador criando essa função, não precisará fazer nada extra para configurar as permissões para a ação iam:PassRole, pois o usuário administrador tem permissões completas, inclusive para a ação iam:PassRole.

Para simplificar o processo de criação de uma função de execução, AWS Lambda fornece as seguintes permissões gerenciadas (predefinidas) da AWS que você pode usar. Essas políticas incluem permissões comuns para cenários específicos:

  • AWSLambdaBasicExecutionRole – Concede permissões somente para as ações do Amazon CloudWatch Logs para gravar logs. Você pode usar essa política se sua função de Lambda não acessar nenhum outro recurso da AWS, a não ser gravar logs.

     

  • AWSLambdaKinesisExecutionRole – Concede permissões para ações do Amazon Kinesis Data Streams e do CloudWatch Logs. Se estiver escrevendo uma função do Lambda para processar eventos de fluxo do Kinesis, você poderá anexar essa política de permissões.

     

  • AWSLambdaDynamoDBExecutionRole – Concede permissões para ações de fluxos do DynamoDB e ações do CloudWatch Logs. Se estiver escrevendo uma função do Lambda para processar eventos de fluxo do DynamoDB, você poderá anexar essa política de permissões.

     

  • AWSLambdaVPCAccessExecutionRole –Concede permissões para ações do Amazon Elastic Compute Cloud (Amazon EC2) para gerenciar interfaces de rede elástica (ENIs). Se estiver escrevendo uma função do Lambda para acessar recursos em uma VPC no serviço da Amazon Virtual Private Cloud (Amazon VPC), você poderá anexar esse serviço de política de permissões. A política também concede permissões para as ações do CloudWatch Logs para gravar logs.

    Você pode encontrar essas políticas permissões gerenciadas da AWS no console do IAM. Pesquise essas políticas e você poderá ver as permissões que cada uma dessas políticas concede.

Gerenciar permissões: usar política de função de Lambda

Todas as fontes de eventos compatíveis, com exceção das fontes baseadas em sondagem que são baseadas em fluxo (Kinesis e DynamoDB) ou baseadas em mensagens (Amazon SQS), invocam sua função do Lambda usando o modelo de envio por push, desde que você conceda as permissões necessárias. Por exemplo, se você desejar que o Amazon S3 invoque a função do Lambda quando os objetos são criados em um bucket, o Amazon S3 precisará de permissões para invocar sua função do Lambda.

Você concede essas permissões por meio das políticas de função. (Para obter uma lista de amostras, consulte Modelos de política.) O AWS Lambda fornece APIs para gerenciar permissões em uma política de função. Para obter exemplos, consulte AddPermission.

Você também pode conceder permissões entre contas usando a política de função. Por exemplo, se um aplicativo definido pelo usuário e a função de Lambda que ele invoca pertencer à mesma conta da AWS, você não precisará conceder permissões explícitas. Caso contrário, a conta da AWS que possui a função do Lambda deverá conceder permissões entre contas na política de permissões associada à função do Lambda.

Em vez de usar a política da função do Lambda, você pode criar outra função do IAM que conceda as origens de eventos (por exemplo, Amazon S3 ou DynamoDB) para invocar sua função do Lambda. No entanto, você pode descobrir que as políticas de recursos são mais fáceis de configurar e facilitam o rastreamento de quais fontes de eventos têm permissões para invocar sua função de Lambda.

Para obter mais informações sobre políticas de funções do Lambda, consulte Uso de políticas com base em recursos para o AWS Lambda (políticas de função do Lambda). Para obter mais informações sobre permissões do Lambda, consulte Controle de acesso e autenticação para AWS Lambda.