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

Solucionar problemas de implantação no Lambda

Quando você atualiza a função, o Lambda implanta a alteração executando novas instâncias da função com o código ou as configurações atualizados. Erros de implantação impedem que a nova versão seja usada e podem surgir de problemas com o pacote de implantação, o código, as permissões ou as ferramentas.

Ao implantar atualizações na função diretamente com a API do Lambda ou com um cliente, como a AWS CLI, é possível visualizar os erros do Lambda diretamente na saída. Se você usar serviços como o AWS CloudFormation, o AWS CodeDeploy ou o AWS CodePipeline, procure a resposta do Lambda nos logs ou no fluxo de eventos desses serviços.

Os tópicos a seguir fornecem orientações para a solução de erros e problemas que você pode encontrar ao usar a API, o console ou as ferramentas do Lambda. Se encontrar um problema que não esteja listado aqui, você poderá usar o botão Feedback desta página para relatá-lo.

Para obter mais orientações sobre solução de problemas e respostas a perguntas comuns de suporte, acesse a Central de Conhecimento da AWS.

Para obter mais informações sobre depuração e solução de problemas de aplicações do Lambda, consulte Debugging no Serverless Land.

Geral: A permissão foi negada/Não é possível carregar esse arquivo

Erro: EACCES: permissão negada, abra '/var/task/index.js'

Erro: não é possível carregar esse arquivo -- função

Erro: [Errno 13] Permissão negada: '/var/task/function.py'

O runtime do Lambda precisa de permissão para ler os arquivos no pacote de implantação. Na notação octal de permissões do Linux, o Lambda precisa de 644 permissões para arquivos não executáveis (rw-r--r--) e 755 permissões () para diretórios e arquivos executáveis. rwxr-xr-x

No Linux e no MacOS, use o comando chmod para alterar as permissões de arquivo em arquivos e diretórios do seu pacote de implantação. Por exemplo, para dar a um arquivo executável as permissões corretas, execute o comando a seguir.

chmod 755 <filepath>

Para alterar as permissões de arquivo no Windows, consulte Set, View, Change, or Remove Permissions on an Object na documentação do Microsoft Windows.

Geral: Ocorre um erro ao chamar o UpdateFunctionCode

Erro: ocorreu um erro (RequestEntityTooLargeException) ao chamar a UpdateFunctionCode operação

Quando você faz upload de um pacote de implantação ou de um arquivamento de camada diretamente no Lambda, o tamanho do arquivo ZIP é limitado a 50 MB. Para fazer upload de um arquivo maior, armazene-o no Amazon S3 e use os parâmetros S3Bucket e S3Key.

nota

Quando você faz upload de um arquivo diretamente com a AWS CLI, o AWS SDK ou de outra forma, o arquivo ZIP binário é convertido em base64, o que aumenta o tamanho dele em cerca de 30%. Para permitir isso e o tamanho de outros parâmetros na solicitação, o limite do tamanho real da solicitação que o Lambda aplica é maior. Por isso, o limite de 50 MB é aproximado.

Amazon S3: Código de erro. PermanentRedirect

Erro: Ocorreu um erro enquanto GetObject. Código de erro S3: PermanentRedirect. Mensagem de erro do S3: O bucket está nesta Região: us-east-2. Use essa região para repetir a solicitação

Ao carregar o pacote de implantação de uma função de um bucket do Amazon S3, o bucket deve estar na mesma Região que a função. Esse problema pode ocorrer quando você especifica um objeto do Amazon S3 em uma chamada para UpdateFunctionCode, ou usa o pacote e implementa comandos na AWS CLI CLIAWS SAM. Crie um bucket de artefato de implantação para cada Região em que você desenvolve aplicativos.

Geral: Não é possível localizar, não é possível carregar, não é possível importar, classe não encontrada, o arquivo ou diretório não existe

Erro: não é possível localizar o módulo "function"

Erro: não é possível carregar esse arquivo -- função

Erro: não é possível importar o módulo "function"

Erro: classe não encontrada: function.Handler

Erro: fork/exec /var/task/function: nenhum arquivo ou diretório

Erro: não é possível carregar o tipo "Function.Handler" do assembly "Function".

O nome do arquivo ou classe na configuração do handler da função não corresponde ao seu código. Para obter mais informações, consulte a seção a seguir.

Geral: Handler de método indefinido

Erro: index.handler está indefinido ou não foi exportado

Erro: Handler "handler" ausente no módulo "function"

Erro: método indefinido `handler' para #<:0x000055b76ccebf98> LambdaHandler

Erro: nenhum método público chamado handleRequest com a assinatura de método apropriada encontrada na classe function.Handler

Erro: não foi possível encontrar o método "handleRequest" no tipo "Function.Handler" do assembly "Function"

O nome do método do handler na configuração do handler da função não corresponde ao seu código. Cada runtime define uma convenção de nomenclatura para os handlers, como filename.methodname. O handler é o método no código da função que é executado pelo runtime quando a função é invocada.

Para alguns idiomas, o Lambda fornece uma biblioteca com uma interface que espera que um método de handler tenha um nome específico. Para obter detalhes sobre a nomenclatura de handlers para cada idioma, consulte os tópicos a seguir.

Lambda: falha na conversão de camadas

Erro: falha na conversão de camadas do Lambda. Para obter orientação sobre como resolver esse problema, consulte a página Solucionar problemas de implantação no Lambda no Guia do usuário do Lambda.

Quando você configura uma função do Lambda com uma camada, o Lambda mescla a camada com seu código de função. Se esse processo não for concluído, o Lambda retornará esse erro. Se você se deparar com esse erro, faça o seguinte:

  • Exclua todos os arquivos não utilizados da sua camada

  • Exclua todos os links simbólicos em sua camada

  • Renomeie todos os arquivos que tenham o mesmo nome de um diretório em qualquer uma das camadas da sua função

Lambda: ou InvalidParameterValueException RequestEntityTooLargeException

Erro:InvalidParameterValueException: O Lambda não conseguiu configurar suas variáveis de ambiente porque as variáveis de ambiente que você forneceu excederam o limite de 4 KB. Seqüência medida: {"A1":" cyPiPn USFey5 7ATNx5BSM...

ErroRequestEntityTooLargeException: a solicitação deve ter menos de 5120 bytes para a operação UpdateFunctionConfiguration

O tamanho máximo do objeto de variáveis que é armazenado na configuração da função não deve exceder 4096 bytes. Isso inclui nomes de chaves, valores, aspas, vírgulas e colchetes. O tamanho total do corpo da solicitação HTTP também é limitado.

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs20.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Environment": { "Variables": { "BUCKET": "my-bucket", "KEY": "file.txt" } }, ... }

Neste exemplo, o objeto tem 39 caracteres e ocupa 39 bytes quando é armazenado (sem espaços em branco) como a string {"BUCKET":"my-bucket","KEY":"file.txt"}. Caracteres ASCII padrão em valores de variáveis de ambiente usam um byte cada. Caracteres ASCII e Unicode estendidos podem usar entre 2 bytes e 4 bytes por caractere.

Lambda: InvalidParameterValueException

Erro: InvalidParameterValueException: O Lambda não conseguiu configurar suas variáveis de ambiente porque as variáveis de ambiente que você forneceu contêm chaves reservadas que atualmente não são suportadas para modificação.

O Lambda reserva algumas chaves de variáveis de ambiente para uso interno. Por exemplo, AWS_REGION é usada pelo runtime para determinar a região atual e não pode ser substituída. Outras variáveis, como PATH, são usadas pelo runtime, mas podem ser estendidas na configuração de função. Para obter uma lista completa, consulte Variáveis de ambiente com runtime definido.

Lambda: simultaneidade e cotas de memória

Erro: a função especificada ConcurrentExecutions diminui a conta UnreservedConcurrentExecution abaixo de seu valor mínimo

Erro: o valor MemorySize '' falhou em satisfazer a restrição: o membro deve ter um valor menor ou igual a 3008

Esses erros ocorrem ao exceder a simultaneidade ou as cotas de memória da conta. As novas contas da AWS reduziram as cotas de simultaneidade e de memória. Para resolver erros relacionados à simultaneidade, é possível solicitar um aumento de cota. Não é possível solicitar aumentos de cota de memória.

  • Simultaneidade: é possível receber um erro se tentar criar uma função usando simultaneidade reservada ou provisionada ou se sua solicitação de simultaneidade por função (PutFunctionConcurrency) exceder a cota de simultaneidade da conta.

  • Memória: os erros ocorrerão se a quantidade de memória alocada para a função exceder a cota de memória da conta.