Solucionar problemas de invocação no Lambda - AWS Lambda

Solucionar problemas de invocação no Lambda

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.

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. Para obter mais informações, consulteThroughput