

# Solução de problemas
<a name="microvms-troubleshooting"></a>

Esta seção descreve como depurar e solucionar problemas comuns ao trabalhar com o AWS Lambda MicroVMS.

## Acesso ao shell
<a name="microvms-troubleshooting-shell"></a>

Use o acesso ao shell para se conectar diretamente a uma microVM em execução para depuração e solução de problemas.

Você pode se conectar a um shell da microVM de duas maneiras:
+ **Console**: selecione sua microVM no console do Lambda e escolha Conectar.
+ **CLI**: gere um token do shell com `create-microvm-shell-auth-token` e, em seguida, use o token para estabelecer uma conexão.

Gere um token do shell e conecte:

```
aws lambda-microvms create-microvm-shell-auth-token \
  --microvm-identifier <id> --expiration-in-minutes 30
# In Console: select MicroVM -> Connect
# In shell: ctr task ls, then ctr task exec -t --exec-id shell <id> /bin/sh
```

A microVM deve ter sido executada com o conector de rede `SHELL_INGRESS` (`arn:aws:lambda:{{us-east-1}}:aws:network-connector:aws-network-connector:SHELL_INGRESS`). Se a microVM não tiver sido iniciada com esse conector, `create-microvm-shell-auth-token` retornará `ValidationException`.

Para outros problemas:
+ Verifique o campo `terminationMessage` na resposta `get-microvm` para ver se há microVMs finalizadas.
+ Verifique os logs de compilação do CloudWatch para ver se há problemas na criação de imagens.
+ Verifique o campo `StateReason` para ver se há conectores de rede no estado `FAILED`.

## Solução de problemas
<a name="microvms-troubleshooting-troubleshooting"></a>

Esta seção fornece soluções para problemas comuns ao trabalhar com o Lambda MicroVMS.


| Sintomas | Possível causa e resolução | 
| --- | --- | 
| A compilação da imagem produz falha (CREATION\_FAILED) | Verifique os registros em log da compilação em /aws/lambda/microvms/<image-name>. Verifique a sintaxe Dockerfile, as permissões do Amazon S3 e a disponibilidade da imagem base. Execute docker build localmente para reproduzir. | 
| MicroVM presa em PENDING | Aguarde e repita. Se persistir, verifique a integridade do serviço. Verifique se sua cota de simultaneidade não está esgotada. | 
| A aplicação não responde após a retomada | Implemente o gancho do ciclo de vida /resume para restabelecer as conexões e validar o estado. Verifique se a aplicação está vinculada à porta 8080 (ou à porta configurada) após a retomada. | 
| 502 Gateway inválido do endpoint | A aplicação falhou ou não está recebendo. Verifique os logs de runtime. Verifique EXPOSE e CMD em Dockerfile. Se for retomada automaticamente, a microVM pode apresentar falha na retomada (verifique o estado por meio de get-microvm). | 
| 429, muitas solicitações | Taxa de solicitações excedida. Tente novamente com recuo exponencial e jitter. | 
| Conexões interrompidas | Intervalo ocioso acionado. Implemente keepalives ping/pong. Ou estenda maxIdleDurationSeconds na política de inatividade. | 
| Alta latência no endpoint | Saturação da largura de banda. Verifique se o tráfego excede a capacidade de largura de banda para o tamanho da sua microVM. Aumente a escala verticalmente para um tamanho maior. | 
| O token de autenticação expirou (403) | Os tokens têm uma expiração configurável. Gere um novo token antes que o antigo expire. Implemente a lógica de atualização do token em seu cliente. | 
| A saída de VPC não está funcionando | Verifique se o conector de rede está no estado ACTIVE. Verifique se as regras do grupo de segurança permitem tráfego de saída. Confirme se as sub-redes têm rotas para seus recursos de destino. | 

## Erros comuns (criação de imagens)
<a name="microvms-troubleshooting-image-errors"></a>


| Erro | Causa | Solução | 
| --- | --- | --- | 
| S3\_ACCESS\_DENIED | O perfil de compilação não tem as permissões para recuperar o artefato do Amazon S3. | Adicione a permissão s3:GetObject para seu bucket de artefatos. | 
| S3\_NO\_SUCH\_KEY | A chave do artefato não existe no bucket. | Verifique se o caminho do Amazon S3 está correto. | 
| S3\_NO\_SUCH\_BUCKET | O bucket do Amazon S3 não existe. | Verifique o nome do bucket e confirme que ele foi criado. | 
| S3\_INVALID\_OBJECT | Artefato no Glacier ou em uma classe de armazenamento não diretamente acessível. | Mova o artefato para a classe de armazenamento padrão. | 
| S3\_CROSS\_REGION\_ACCESS\_DENIED | O artefato está em uma região diferente da imagem da microVM. | Verifique se o artefato está na mesma região da imagem da microVM. | 
| ARCHIVE\_DOCKERFILE\_NOT\_FOUND | Falta um Dockerfile no diretório raiz do arquivo compactado. | Adicione um Dockerfile à raiz do seu arquivo compactado. | 
| ARCHIVE\_INVALID | O arquivo não é um ZIP válido ou está corrompido. | Recrie o arquivo zip e faça o upload novamente. | 
| CONTAINER\_BUILD\_FAILED | Instruções do Dockerfile inválidas, arquivos ausentes ou erros de sintaxe. | Depure seu Dockerfile localmente usando docker build. | 
| DISK\_STORAGE\_FULL | A microVM ficou sem armazenamento durante a compilação. | Reduza o tamanho do artefato ou entre em contato com o suporte. | 
| INTERNAL\_PLATFORM\_ERROR | Ocorreu um erro interno. | Repetir a operação. Se persistir, entre em contato com o suporte. | 

## Solução de problemas do conector de rede
<a name="microvms-troubleshooting-connector-errors"></a>


| Código de erro | Causa | Solução | 
| --- | --- | --- | 
| DisallowedByVpcEncryptionControl | A VPC tem uma política de controle de criptografia que impede o tráfego ou interfaces de rede não criptografados. O Lambda não pode criar ENIs que satisfaçam os requisitos de criptografia. | Inclua o Lambda na lista de exclusão do controle de criptografia de VPC. Se a exclusão não for possível, use uma VPC ou sub-rede que não tenha controles restritivos de criptografia aplicados. | 
| Ec2RequestLimitExceeded | O Lambda faz chamadas de API do EC2 (por exemplo, CreateNetworkInterface, DescribeSubnets) para configurar a conectividade. Muitas chamadas de API do EC2 simultâneas causam controle de utilização. | Repita a operação após um pequeno atraso. Se for persistente, reduza as operações simultâneas do conector de rede ou solicite o aumento do limite de controle de utilização da API do EC2 por meio do AWS Support. | 
| InsufficientRolePermissions | O perfil do operador não tem as permissões do EC2 necessárias. | Certifique-se de que o perfil do IAM tenha as permissões de rede do EC2 necessárias. | 
| InternalError | Ocorreu um erro inesperado no serviço do Lambda ao processar a solicitação do conector de rede. | Repetir a operação. Se isso persistir após várias tentativas, entre em contato com o AWS Support com o ARN do conector de rede e a data e hora aproximadas. | 
| InvalidSecurityGroup | O ID do grupo de segurança não existe, foi excluído ou não pertence à mesma VPC das sub-redes especificadas. | Verifique se todas as IDs do grupo de segurança existem e pertencem à mesma VPC das sub-redes. Use aws ec2 describe-security-groups --group-ids <sg-id> para validar. | 
| InvalidSubnet | A ID da sub-rede não existe, foi excluída ou pertence a uma VPC diferente da esperada. | Verifique se todas as IDs de sub-rede existem e pertencem à VPC correta. Use aws ec2 describe-subnets --subnet-ids <subnet-id> para validar. | 
| SubnetOutOfIPAddresses | O bloco CIDR da sub-rede está esgotado: todos os IPs são alocados para outros recursos (ENIs, instâncias, etc.) e, portanto, o Lambda não pode criar uma interface de rede. | Libere endereços IP removendo ENIS/instâncias não utilizadas ou use uma sub-rede diferente com capacidade disponível. Considere sub-redes maiores (por exemplo, /24 ou maiores) para conectores de rede. | 