Quando você invoca uma função do Lambda, o Lambda valida a solicitação e verifica a capacidade de escalabilidade antes de enviar o evento para a função ou, na invocação assíncrona, para a fila de eventos. Erros de invocação podem ser causados por problemas com os parâmetros da solicitação, a estrutura do evento, as configurações da função, as permissões do usuário, as permissões de recursos ou os limites.
Se você invocar a função diretamente, verá todos os erros de invocação na resposta do Lambda. Se invocar a função de forma assíncrona, com um mapeamento de origem de evento ou por meio de outro serviço, você poderá encontrar erros em logs, em uma fila de mensagens mortas ou em um destino de evento com falha. As opções de tratamento de erros e o comportamento de repetição variam dependendo de como você invoca a função e do tipo de erro.
Para obter uma lista de tipos de erro que a operação Invoke
pode retornar, consulte Invoke.
Tópicos
Lambda: a função atinge o tempo limite durante a fase inicial (Sandbox.Timedout)
Lambda: não foi possível encontrar um bootstrap válido (Runtime.InvalidEntrypoint)
Lambda: A operação não pode ser executada ResourceConflictException
Geral: Não é possível invocar a função com outras contas ou serviços
Lambda: As inicializações a frio começam com simultaneidade provisionada
EFS: A função não pôde se conectar ao sistema de arquivos do EFS
EFS: A função não pôde montar o sistema de arquivos do EFS devido ao tempo limite
Lambda: O Lambda detectou um processo de E/S que estava demorando muito
Lambda: a função atinge o tempo limite durante a fase inicial (Sandbox.Timedout)
Erro: Task timed out after 3,00 seconds
Quando a fase de inicialização atingir o tempo limite, o Lambda inicializará o ambiente de execução novamente ao executar a fase de Init
quando a próxima solicitação de invocação chegar. Isso se chama inicialização suprimida. No entanto, se a função estiver configurada com uma duração de tempo limite curta (geralmente em torno de três segundos), a inicialização suprimida poderá não ser concluída durante o tempo limite alocado, fazendo com que a fase de Init
atinja o tempo limite novamente. Como alternativa, a inicialização suprimida é concluída, mas não há tempo suficiente para que a fase de invocação seja concluída, fazendo com que a fase de Invoke
atinja o tempo limite.
Para reduzir os erros de tempo limite, use uma ou mais das seguintes estratégias:
-
Aumentar a duração do tempo limite da função: estenda o tempo limite para que as fases de
Init
eInvoke
sejam concluídas com êxito. -
Aumentar a alocação de memória da função: mais memória também significa mais alocação proporcional da CPU, o que pode acelerar as fases de
Init
eInvoke
. -
Otimizar o código de inicialização da função: reduza o tempo necessário para a inicialização para garantir que as fases de
Init
eInvoke
possam ser concluídas dentro do tempo limite configurado. -
Adicionar tratamento de erros: o tratamento adequado de erros no código da função pode evitar que o ambiente de execução do Lambda falhe e acione sucessivas tentativas de inicialização.
IAM: lambda:InvokeFunction não autorizado
Erro: usuário: arn:aws:iam::123456789012:user/developer não tem autorização para executar: lambda:InvokeFunction no recurso: my-function
Seu usuário, ou o perfil que você assume, deve ter permissões para invocar uma função. Esse requisito também se aplica a funções do Lambda e a outros recursos de computação que invocam funções. Adicione a política gerenciada pela AWS AWSLambdaRole ao seu usuário ou adicione uma política personalizada que permita a ação lambda:InvokeFunction
na função de destino.
nota
O nome da ação do IAM (lambda:InvokeFunction
) refere-se à operação da API Invoke
do Lambda.
Para obter mais informações, consulteGerenciando permissões no AWS Lambda
Lambda: não foi possível encontrar um bootstrap válido (Runtime.InvalidEntrypoint)
Erro: não foi possível encontrar bootstrap(s) válido(s): [/var/task/bootstrap /opt/bootstrap]
Esse erro normalmente ocorre quando a raiz do pacote de implantação não contém um arquivo executável denominado bootstrap
. Por exemplo, se você estiver implantando uma função provided.al2023
com um arquivo .zip, o arquivo bootstrap
deverá estar na raiz do arquivo .zip e não em um diretório.
Lambda: A operação não pode ser executada ResourceConflictException
Erro: ResourceConflictException: não é possível executar a operação neste momento. A função está atualmente no seguinte estado: Pendente
Quando você conecta uma função a uma virtual private cloud (VPC) no momento da criação, a função entra em estado Pending
enquanto o Lambda cria interfaces de rede elástica. Durante esse período, não será possível invocar ou modificar sua função. Se conectar sua função a uma VPC após a criação, você poderá invocá-la enquanto a atualização estiver pendente, mas não poderá modificar seu código ou configuração.
Para obter mais informações, consulteEstados da função do Lambda
Lambda: A função está paralisada em Pendente
Erro: uma função está presa no estado Pending
há vários minutos.
Se uma função ficar paralisada no estado Pending
por mais de seis minutos, chame uma das operações da API a seguir para desbloqueá-la:
O Lambda cancela a operação pendente e coloca a função no estado Failed
. Em seguida, você pode tentar outra atualização.
Lambda: Uma função está usando toda a simultaneidade
Problema: uma função está usando toda a simultaneidade disponível, fazendo com que outras funções fiquem limitadas.
Para dividir a simultaneidade disponível da sua conta da AWS em uma região da AWS em grupos, use a simultaneidade reservada. A simultaneidade reservada garante que uma função sempre possa escalar para a sua simultaneidade atribuída, e que ela não escale além da simultaneidade atribuída.
Geral: Não é possível invocar a função com outras contas ou serviços
Problema: você consegue invocar sua função diretamente, mas ela não é executada quando outro serviço ou conta a invoca.
Você concede a outros serviços e contas permissão para invocar uma função na política baseada em recursosda função. Se o invocador estiver em outra conta, esse usuário também precisará da permissão para invocar funções.
Geral: A invocação da função está em loop
Problema: a função é invocada continuamente em um loop.
Isso geralmente ocorre quando a sua função gerencia recursos no mesmo serviço da AWS que o aciona. Por exemplo, é possível criar uma função que armazena um objeto em um bucket do Amazon Simple Storage Service (Amazon S3) que é configurado com uma notificação que invoca a função novamente. Para interromper a execução da função, reduza a simultaneidade disponível para zero, o que controla a utilização de todas as invocações futuras. Em seguida, identifique o caminho de código ou erro de configuração que gerou a invocação recursiva. O Lambda detecta e interrompe automaticamente loops recursivos para alguns serviços e SDKs da AWS. Para ter mais informações, consulte Usar a detecção de loop recursivo do Lambda para evitar loops infinitos.
Lambda: Roteamento de alias com simultaneidade provisionada
Problema: Chamadas de spillover de simultaneidade provisionadas durante o roteamento de alias.
O Lambda usa um modelo probabilístico simples para distribuir o tráfego entre as duas versões de função. Em níveis de tráfego baixos, você pode ver uma alta variação entre a porcentagem configurada e real de tráfego em cada versão. Se sua função usa simultaneidade provisionada, você pode evitarInvocações de transbordamentoconfigurando um número maior de instâncias de simultaneidade provisionadas durante o tempo em que o roteamento de alias está ativo.
Lambda: As inicializações a frio começam com simultaneidade provisionada
Problema: Você vê inicializações a frio depois de habilitar a simultaneidade provisionada.
Quando o número de execuções simultâneas em uma função é menor ou igual ao nível configurado de simultaneidade provisionada, não deve haver nenhuma inicialização a frio. Para ajudar a confirmar se a simultaneidade provisionada está operando normalmente, faça o seguinte:
-
Verifique se a simultaneidade provisionada está habilitada na versão ou alias da função.
nota
A simultaneidade provisionada não é configurável na versão da função não publicada ($LATEST).
-
Certifique-se de que seus gatilhos invoquem a versão ou alias correto da função. Por exemplo, se você estiver usando o Amazon API Gateway, verifique se ele invoca a versão ou o alias da função com simultaneidade provisionada, e não a $LATEST. Para confirmar se a simultaneidade provisionada está em uso, você pode verificar a métrica ProvisionedConcurrencyInvocations do Amazon CloudWatch. Um valor diferente de zero indica que a função está processando invocações em ambientes de execução inicializados.
-
Determine se a simultaneidade da função excede o nível configurado de simultaneidade provisionada verificando a métrica ProvisionedConcurrencySpilloverInvocations do CloudWatch. Um valor diferente de zero indica que toda a simultaneidade provisionada está em uso e que ocorreu alguma invocação com inicialização a frio.
-
Verifique a sua frequência de invocação (solicitações por segundo). Funções com simultaneidade provisionada apresentam uma taxa máxima de dez solicitações por segundo por simultaneidade provisionada. Por exemplo, uma função configurada com 100 casos de simultaneidade provisionada pode lidar com 1.000 solicitações por segundo. Se a taxa de invocação exceder 1.000 solicitações por segundo, podem ocorrer algumas inicializações a frio.
Lambda: As inicializações a frio começam com novas versões
Problema: Você vê inicializações a frio ao implantar novas versões da sua função.
Quando você atualiza um alias da função, o Lambda automaticamente muda a simultaneidade provisionada para a nova versão com base nos pesos configurados no alias.
Erro: KMSDisabledException: o Lambda não conseguiu descriptografar as variáveis de ambiente porque a chave do KMS usada está desabilitada. Verifique as configurações da chave do KMS da função.
Esse erro pode ocorrer se a sua chave do AWS Key Management Service (AWS KMS) estiver desabilitada ou se a concessão que permite que o Lambda use a chave for revogada. Se a concessão estiver ausente, configure a função para usar outra chave. Em seguida, reatribua a chave personalizada para recriar a concessão.
EFS: A função não pôde montar o sistema de arquivos do EFS
Erro: EFSMountFailureException: a função não pôde montar o sistema de arquivos do EFS com o ponto de acesso arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd.
A solicitação de montagem para o sistema de arquivos da função foi rejeitada. Verifique as permissões da função e confirme se o sistema de arquivos e o ponto de acesso existem e estão prontos para uso.
EFS: A função não pôde se conectar ao sistema de arquivos do EFS
Erro: EFSMountConnectivityException: a função não pôde se conectar ao sistema de arquivos do Amazon EFS com o ponto de acesso arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd. Verifique a configuração de rede e tente novamente.
A função não pôde estabelecer uma conexão com o sistema de arquivos da função com o protocolo NFS (TCP porta 2049). Verifique a configuração do grupo de segurança e de roteamento das sub-redes da VPC.
Se você receber esses erros após atualizar as configurações de VPC da função, tente desmontar e remontar o sistema de arquivos.
EFS: A função não pôde montar o sistema de arquivos do EFS devido ao tempo limite
Erro: EFSMountTimeoutException: A função não pôde montar o sistema de arquivos do EFS com o ponto de acesso {arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd} devido ao tempo limite da montagem.
A função pôde se conectar ao sistema de arquivos da função, mas a operação de montagem atingiu o tempo limite. Tente novamente após um breve intervalo e considere limitar a simultaneidade da função para reduzir a carga no sistema de arquivos.
Lambda: O Lambda detectou um processo de E/S que estava demorando muito
EFSIOException: esta instância de função foi interrompida porque o Lambda detectou um processo de E/S que estava demorando muito.
Uma invocação anterior atingiu o tempo limite e o Lambda não conseguiu finalizar o handler de funções. Esse problema pode ocorrer quando um sistema de arquivos anexado fica sem crédito de intermitência e a throughput de linha de base é insuficiente. Para aumentar o throughput, você pode aumentar o tamanho do sistema de arquivos ou usar o throughput provisionado.