Configurei uma função do AWS Lambda para invocar de forma assíncrona, mas o destino não está iniciando. Como faço para corrigir esse problema?
Quando invoco uma função do Lambda por meio do console do Lambda, ela é invocada de forma síncrona ou assíncrona?
-ou-
Como faço para corrigir invocações duplicadas de funções do Lambda?
Resolução
Quando você invoca de forma assíncrona uma função do Lambda e ela falha, as possíveis causas são:
- O Lambda não tem permissão para realizar as ações incluídas no código.
- O serviço da AWS que invoca a função Lambda não tem permissões suficientes.
- A função Lambda é invocada de forma síncrona.
- As tentativas de repetição foram definidas como 0 na configuração de invocação assíncrona para uma função Lambda.
Siga estas etapas para solucionar problemas de invocação assíncrona:
1. Determine como a função Lambda é invocada. A função é invocada usando a AWS CLI? A função é invocada por meio de um serviço da AWS?
2. Verifique se o serviço da AWS invoca a função Lambda de forma síncrona ou assíncrona.
3. Invoque a função Lambda de forma assíncrona usando o seguinte comando:
aws lambda invoke
--function-name my-function
--invocation-type Event
--cli-binary-format raw-in-base64-out
--payload '{ "key": "value" }' response.json
Veja se um código de status 202 foi informado ou se o comando retorna um erro.
4. Analise os Amazon CloudWatch Logs da função Lambda para ver se as invocações duplicadas:
- Têm o mesmo ID de solicitação ou não.
- Retornaram erros ou expiraram.
Para obter mais informações, consulte Como faço para evitar invocações duplicadas de funções do Lambda?
5. Se as invocações duplicadas tiverem o mesmo ID de solicitação e retornarem erros ou expirarem, configure o tratamento de erros para invocações assíncronas. Usando essa configuração, você pode controlar o número de novas tentativas que o serviço Lambda pode realizar em caso de falha.
Para obter mais informações, consulte Tratar erros e novas tentativas automáticas no AWS Lambda.
Observação: invocações duplicadas com o mesmo ID de solicitação que retornam erros ou expiram indicam que o Lambda tentou a função novamente.
6. Se as invocações duplicadas não tiverem retornado erros nem expirado, faça o seguinte:
- Certifique-se de que o código da função Lambda seja idempotente e possa lidar com as mesmas mensagens várias vezes.
- Certifique-se de que a função Lambda tenha um limite de simultaneidade definido alto o suficiente para lidar com o número de solicitações de invocações recebidas.
- Identifique e solucione erros retornados pela função Lambda.
Para obter mais informações, consulte Como soluciono falhas de funções do Lambda?
Observação: se as invocações duplicadas forem do lado do cliente, os IDs de solicitação serão diferentes.
7. Se você ainda não conseguir resolver o problema, abra um caso com o AWS Support. Forneça as seguintes informações no caso:
- A função Lambda nome do recurso da Amazon (ARN).
- O fluxo de trabalho na configuração da função Lambda com todos os serviços incluídos.
- Detalhes se o problema é intermitente ou contínuo.
- Complete os registros 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
Como comparar os modos de invocação do Lambda
Como invocar funções do Lambda
Apresentação dos destinos do AWS Lambda