View a markdown version of this page

Solução de problemas - AWS Lambda

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-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

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.