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
Tópicos
- Geral: A permissão foi negada/Não é possível carregar esse arquivo
- Geral: Ocorre um erro ao acionar o updateFunctionCode
- Amazon S3: Código de erro PermanentRedirect.
- 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
- Geral: Handler de método indefinido
- Lambda: falha na conversão de camadas
- Lambda: InvalidParameterValueException ou RequestEntityToolargeException
- Lambda: InvalidParameterValueException
- Lambda: simultaneidade e cotas de memória
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 (rwxr-xr-x) para diretórios e arquivos executáveis.
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
Geral: Ocorre um erro ao acionar o updateFunctionCode
Erro: ocorreu um erro (RequestEntityTooLargeException) ao chamar a operação UpdateFunctionCode
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 ao 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 ao especificar um objeto do Amazon S3 em uma chamada para UpdateFunctionCode ou usar o pacote e implantar comandos na AWS CLI ou na CLI do AWS 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. Consulte a seção a seguir para obter mais informações.
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 #<LambdaHandler:0x000055b76ccebf98>
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: InvalidParameterValueException ou RequestEntityToolargeException
Erro: InvalidParameterValueException: o Lambda não conseguiu configurar as variáveis de ambiente porque as variáveis de ambiente fornecidas excederam o limite de 4 KB. Cadeia de caracteres medida: {"A1":"uSFeY5cyPiPn7AtnX5BsM...
Erro: RequestEntityTooLargeException: a solicitação deve ser menor do que 5.120 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": "nodejs22.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Environment": { "Variables":
{ "BUCKET": "amzn-s3-demo-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":"amzn-s3-demo-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 as variáveis de ambiente porque as variáveis de ambiente fornecidas contêm chaves reservadas que atualmente não têm suporte 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: ConcurrentExecutions especificado para a função diminui UnreservedConcurrentExecution da conta para um valor abaixo do mínimo
Error: O valor de “MemorySize” não atende à restrição: o valor de Member (Membro) deve ser 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.