Como soluciono problemas de permissões com o Lambda?
Tenho vários problemas de permissões associados a minha função do AWS Lambda. Quais etapas de solução de problemas devo seguir?
Breve descrição
Os problemas de permissões da função Lambda surgem por estes motivos:
- A função Lambda não tem permissão para executar as ações no código.
- O produto da AWS responsável por invocar a função Lambda não tem permissão suficiente para invocar a função.
- Uma conta de usuário não tem as devidas permissões para criar, atualizar ou excluir recursos do Lambda.
- O Lambda não tem permissão para criar uma interface de rede elástica por falta de permissões do Amazon Elastic Compute Cloud (Amazon EC2).
Resolução
Considerações sobre permissões
- Um perfil de execução de uma função Lambda é uma função do AWS Identity and Access Management (IAM) que concede à função permissões para acessar os serviços e recursos da AWS. Você fornece esse perfil ao criar uma função, e o Lambda assume o perfil quando sua função é invocada. É possível criar um perfil de execução que tenha permissões para enviar logs ao Amazon CloudWatch e carregar dados de rastreamento para o AWS X-Ray.
- Você pode adicionar ou remover permissões do perfil de execução de uma função Lambda a qualquer momento. Também é possível configurar sua função Lambda para usar uma função diferente. Adicione permissões para qualquer produto da AWS que sua função chama com um SDK da AWS. Em seguida, adicione permissões para os produtos da AWS que o Lambda usa para ativar os recursos opcionais.
- Forneça um perfil de execução ao criar uma função Lambda. Quando você invoca sua nova função Lambda, o Lambda fornece automaticamente credenciais temporárias à função assumindo o perfil de execução. Não é necessário chamar sts:AssumeRole no código da função. Ao adicionar permissões à função Lambda, atualize também o código ou a configuração da função. Ao atualizar o código ou a configuração da função, as instâncias da função que estão em execução são forçadas a serem interrompidas para que possam ser substituídas. Para obter mais informações, consulte Usar políticas baseadas em recursos para o Lambda.
- Use políticas baseadas em recursos para conceder permissão de uso a outras contas ou organizações da AWS para cada recurso. Uma política baseada em recursos pode dar permissão a um produto da AWS para invocar a função Lambda em seu nome.
- Para invocar ou gerenciar uma função Lambda, conceda permissão a uma conta. Crie uma única política baseada em recursos para conceder permissões a uma organização inteira no AWS Organizations. Use políticas baseadas em recursos para conceder permissão de invocação a um produto da AWS para que a função possa ser invocada em resposta a atividades específicas da conta.
- As políticas baseadas em recursos se aplicam a uma única função, versão, alias ou versão de camada. Políticas baseadas em recursos concedem permissão para um ou mais produtos e contas da AWS. Para contas confiáveis que precisam de acesso a vários recursos ou para usar ações de API não compatíveis com políticas baseadas em recursos, use perfis entre contas. Para obter mais informações, consulte Permissões do Lambda.
- Use políticas baseadas em identidade do IAM para conceder acesso ao Lambda aos usuários da conta. As políticas baseadas em identidade podem ser aplicadas diretamente aos usuários ou a grupos e perfis associados a um usuário. Conceda aos usuários de outra conta permissões para assumir um perfil em sua conta e acessar seus recursos do Lambda.
- O Lambda fornece políticas gerenciadas pela AWS que concedem acesso às ações de API do Lambda. As políticas gerenciadas podem conceder acesso a outros produtos da AWS usados para desenvolver e gerenciar recursos do Lambda. O Lambda atualiza essas políticas gerenciadas, conforme necessário, para garantir que os usuários tenham acesso a novos recursos quando forem lançados. Para obter mais informações, consulte Políticas do IAM baseadas em identidade para o Lambda.
Etapas de solução de problemas
1. Se a função Lambda deveria invocar outra função ou outro produto da AWS, mas está falhando, verifique o perfil de execução do Lambda.
Para obter mais informações, consulte Função de execução do Lambda.
2. Verifique se o produto ou usuário da AWS tem permissões definidas para a ação lambda:invokeFunction.
Para obter mais informações, consulte Ações, recursos e chaves de condição do AWS Lambda.
3. Em um cenário de várias contas, acesse as contas de origem e de destino para verificar as permissões necessárias para assumir um perfil do IAM para invocar a função Lambda.
Para obter mais informações, consulte How do I configure a Lambda function to assume an IAM role in another AWS account? (Como configuro uma função Lambda para assumir um perfil do IAM em outra conta da AWS?).
4. Para se conectar a uma VPC, o perfil de execução da função Lambda deve ter as seguintes permissões:
ec2:CreateNetworkInterface
ec2:DescribeNetworkInterfaces
ec2:DeleteNetworkInterface
5. Resolva problemas de permissões comparando o conjunto de permissões que não funcionam com alguma configuração que esteja funcionando. Você também pode consultar a documentação da AWS para verificar as permissões.
6. A conta de origem precisa ter permissão para invocar a função Lambda. Revise as permissões de mapeamento da origem do evento necessárias para a função Lambda. Um mapeamento da origem do evento usa permissões no perfil de execução da função para ler e gerenciar itens na origem do evento. As permissões, a estrutura do evento, as configurações e o comportamento da pesquisa variam de acordo com a origem do evento. Para obter mais informações, consulte Solução de problemas de identidade e acesso do AWS Lambda.
7. Verifique os logs do AWS CloudTrail para rastrear chamadas de API feitas ao Lambda. Analise as informações coletadas pelo CloudTrail para identificar:
A solicitação que foi feita ao Lambda.
O endereço IP do qual a solicitação foi feita.
Quem fez a solicitação.
Quando a solicitação foi feita.
Para obter mais informações, consulte Registrar chamadas de API em log do Lambda com o CloudTrail.
8. Se você ainda não conseguir resolver o problema, abra um caso no AWS Support. Forneça as seguintes informações no caso:
- O ARN da função Lambda.
- O fluxo de trabalho na configuração da função Lambda com todos os produtos da AWS incluídos.
- Detalhes sobre se o problema é intermitente ou contínuo.
- Detalhes sobre se o problema é um cenário de várias contas.
- As permissões e/ou os nomes dos perfis do IAM envolvidos.
- Preencha os logs do CloudWatch no formato .txt a partir do momento em que o problema ocorreu. Esses logs do CloudWatch são usados para identificar erros de função do Lambda que incluem problemas de tempo limite, durações de inicialização e problemas de permissões.
- A data exata do problema com o fuso horário ou a data e hora em UTC.
Observação: os representantes do AWS Support não têm acesso aos logs do CloudWatch do cliente por motivos de segurança e privacidade.
Informações relacionadas
How do I configure a Lambda function to assume an IAM role in another AWS account? (Como faço para configurar uma função Lambda para assumir um perfil do IAM em outra conta da AWS?)
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos