Solução de problemas
Esta seção descreve como depurar e solucionar problemas comuns ao trabalhar com o AWS Lambda MicroVMS.
Acesso ao shell
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-tokene, 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:). Se a microVM não tiver sido iniciada com esse conector, us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESScreate-microvm-shell-auth-token retornará ValidationException.
Para outros problemas:
-
Verifique o campo
terminationMessagena respostaget-microvmpara 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
StateReasonpara ver se há conectores de rede no estadoFAILED.
Solução de problemas
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)
| 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
| 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. |