

# Solucionar problemas de implantação no Lambda
<a name="troubleshooting-deployment"></a>

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](https://aws.amazon.com/premiumsupport/knowledge-center/#AWS_Lambda).

Para obter mais informações sobre depuração e solução de problemas de aplicações do Lambda, consulte [Debugging](https://serverlessland.com/content/service/lambda/guides/aws-lambda-operator-guide/debugging-ops) no Serverless Land.

**Topics**
+ [Geral: A permissão foi negada/Não é possível carregar esse arquivo](#troubleshooting-deployment-denied)
+ [Geral: Ocorre um erro ao acionar o updateFunctionCode](#troubleshooting-deployment-updatefunctioncode)
+ [Amazon S3: Código de erro PermanentRedirect.](#troubleshooting-deployment-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](#troubleshooting-deployment-functionHandler1)
+ [Geral: Handler de método indefinido](#troubleshooting-deployment-functionHandler2)
+ [Geral: limite de armazenamento de código do Lambda excedido](#troubleshooting-deployment-CodeStorageExceeded)
+ [Lambda: falha na conversão de camadas](#troubleshooting-deployment-LayerConversionFailed)
+ [Lambda: InvalidParameterValueException ou RequestEntityToolargeException](#troubleshooting-deployment-InvalidParameterValueException1)
+ [Lambda: InvalidParameterValueException](#troubleshooting-deployment-InvalidParameterValueException2)
+ [Lambda: simultaneidade e cotas de memória](#troubleshooting-deployment-quotas)
+ [Lambda: configuração de alias inválida para simultaneidade provisionada](#troubleshooting-deployment-provisioned-concurrency)

## Geral: A permissão foi negada/Não é possível carregar esse arquivo
<a name="troubleshooting-deployment-denied"></a>

**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 não executável as permissões corretas, execute o comando a seguir.

```
chmod 644 <filepath>
```

Para alterar as permissões de arquivo no Windows, consulte [Set, View, Change, or Remove Permissions on an Object](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731667(v=ws.10)) na documentação do Microsoft Windows.

**nota**  
Se você não conceder ao Lambda as permissões necessárias para acessar diretórios no seu pacote de implantação, o Lambda definirá as permissões desses diretórios como 755 (rwxr-xr-x).

## Geral: Ocorre um erro ao acionar o updateFunctionCode
<a name="troubleshooting-deployment-updatefunctioncode"></a>

**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.
<a name="troubleshooting-deployment-PermanentRedirect"></a>

**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](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html) 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
<a name="troubleshooting-deployment-functionHandler1"></a>

**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
<a name="troubleshooting-deployment-functionHandler2"></a>

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

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

**Erro:** *método indefinido "handler" para \$1<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.
+ [Criar funções do Lambda com Node.js](lambda-nodejs.md)
+ [Criar funções do Lambda com Python](lambda-python.md)
+ [Construir funções do Lambda com Ruby](lambda-ruby.md)
+ [Construir funções do Lambda com Java](lambda-java.md)
+ [Criar funções do Lambda com Go](lambda-golang.md)
+ [Construir funções do Lambda com C\$1](lambda-csharp.md)
+ [Construir funções do Lambda com o PowerShell](lambda-powershell.md)

## Geral: limite de armazenamento de código do Lambda excedido
<a name="troubleshooting-deployment-CodeStorageExceeded"></a>

**Erro:** *limite de armazenamento de código excedido.*

O Lambda armazena o código da função em um bucket interno do S3 privativo da sua conta. Cada conta da AWS recebe 75 GB de armazenamento em cada região. O armazenamento de códigos inclui o armazenamento total usado pelas camadas e as funções do Lambda. Se atingir a cota, você receberá uma *CodeStorageExceededException* ao tentar implantar novas funções.

Gerencie o espaço de armazenamento disponível, limpando versões antigas de funções, removendo códigos não utilizados ou utilizando camadas do Lambda. Além disso, é uma boa prática [usar contas da AWS separadas para workloads distintas](concepts-application-design.md#multiple-accounts), a fim de ajudar a gerenciar as cotas de armazenamento.

É possível ver o uso total do armazenamento no console do Lambda, no submenu **Painel**:

![\[monitoramento e observabilidade figura 26\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/monitoring-observability-figure-26.png)




## Lambda: falha na conversão de camadas
<a name="troubleshooting-deployment-LayerConversionFailed"></a>

**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
<a name="troubleshooting-deployment-InvalidParameterValueException1"></a>

**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: \$1"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": "nodejs24.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
<a name="troubleshooting-deployment-InvalidParameterValueException2"></a>

**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](configuration-envvars.md#configuration-envvars-runtime).

## Lambda: simultaneidade e cotas de memória
<a name="troubleshooting-deployment-quotas"></a>

**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](gettingstarted-limits.md) 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](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html). 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](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionConcurrency.html)) 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.

## Lambda: configuração de alias inválida para simultaneidade provisionada
<a name="troubleshooting-deployment-provisioned-concurrency"></a>

**Erro:*** configuração de alias inválida para simultaneidade provisionada*

Esse erro ocorre quando você tenta atualizar o código ou a configuração de uma função do Lambda enquanto um alias com simultaneidade provisionada está apontando para uma versão com problemas. O Lambda pré-inicializa ambientes de execução para simultaneidade provisionada e, se esses ambientes não puderem ser inicializados adequadamente devido a erros de código, restrições de recursos ou pilha e alias afetados, a implantação falhará. Se você se deparar com esse problema, faça o seguinte:

1. **Reverta o alias:** atualize temporariamente o alias para apontar para a versão que estava funcionando anteriormente.

   ```
    aws lambda update-alias \
     --function-name <function-name> \
     --name <alias-name> \
     --function-version <known-good-version>
   ```

1. **Corrija o código de inicialização do Lambda:** garanta que o código de inicialização executado fora do manipulador não tenha nenhuma exceção não detectada e inicialize os clientes e as conexões.

1. **Implante novamente a segurança:** implante o código corrigido e publique uma nova versão. Em seguida, atualize o alias para apontar para a versão corrigida. Opcionalmente, reative a [simultaneidade provisionada](provisioned-concurrency.md), se necessário.

Se estiver usando AWS CloudFormation, atualize a definição da pilha `FunctionVersion:!GetAtt version.Version` para que o alias aponte para a versão de trabalho:

```
alias:
 Type: AWS::Lambda::Alias
 Properties:
 FunctionName: !Ref function
FunctionVersion: !GetAtt version.Version
 Name: BLUE
 ProvisionedConcurrencyConfig:
 ProvisionedConcurrentExecutions: 1
```