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 chamar 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: ou InvalidParameterValueException 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 () 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
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.