Como posso solucionar erros 500 com integração de links de VPC para o API Gateway?

6 minuto de leitura
0

Eu configurei o Amazon API Gateway com integrações de links de nuvem privada virtual (VPC). Quando chamo minha API, recebo um erro interno ou de configuração com um código de status HTTP 500.

Breve descrição

O AWS API Gateway com links de VPC pode falhar em encaminhar tráfego para recursos de back-end e retornar um código de status HTTP 500 pelos seguintes motivos:

  • O link da VPC está no estado Falha. Ou o serviço de endpoint foi excluído ou está no estado Rejeitado.
  • O destino registrado para o grupo de destino não está íntegro ou não está em uso.
    Observação: se nenhum tráfego for enviado pelo link da VPC por 60 dias, o link se tornará INATIVO. Para obter mais informações, consulte Trabalhar com links de VPC para APIs HTTP.
  • Grupos de segurança não permitem tráfego em portas específicas.
  • A lista de controle de acesso à rede (ACL da rede) bloqueia o tráfego.
  • O destino não está recebendo nas portas de destino.
  • O certificado do nome de domínio não corresponde ao Network Load Balancer ou ao Application Load Balancer ativado por TLS.

Se o Amazon CloudWatch Logs estiver ativado para a API, uma mensagem de erro com a causa do erro aparecerá nos logs de execução.

Exemplos de mensagens de erro HTTP 500 nos logs do CloudWatch

"Thu Aug 04 17:48:21 UTC 2022 : Execution failed due to configuration error: There was an internal error while executing your request Thu Aug 04 17:48:21 UTC 2022 : Method completed with status: 500"

-ou-

"Thu Aug 04 19:50:21 UTC 2022 : Execution failed due to configuration error: Host name 'domain.com.com' does not match the certificate subject provided by the peer (CN=myinstance.com)
Thu Aug 04 19:50:21 UTC 2022 : Method completed with status: 500"

Resolução

Confirme a causa do erro

Ative o registro em log da API do CloudWatch. Certifique-se de configurar o registro em log de execução.

Observação: ao definir as configurações de registro em log, em Nível do log, escolha INFO. Em seguida, escolha Registrar dados completos de solicitações/respostas.

Para identificar a causa dos erros, examine os logs de execução das APIs REST no CloudWatch.

Verifique a mensagem de erro nos logs de execução

Error: Execution failed due to configuration error: There was an internal error while executing your request

Verifique as seguintes configurações:

  • Verifique se o balanceador de carga do link da VPC existe e não foi excluído.
  • Verifique se o link da VPC está no estado DISPONÍVEL. Se o link da VPC estiver no estado FALHA, você deverá criar um novo link da VPC e associá-lo à sua API.
    Observação: implante a API depois de modificar a solicitação de integração.
  • Verifique se a conexão do endpoint do link da VPC está no estado DISPONÍVEL.
  • Se o ID da VPC for referenciado com uma variável de estágio, verifique se o ID do link da VPC está correto.
  • Verifique se o balanceador de carga do link da VPC recebe na porta HTTP/HTTPS para a qual a solicitação está configurada. Verifique se os receptores estão configurados para a porta correta. Certifique-se de que as ACLs de rede não bloqueiem a solicitação.
  • Verifique se o grupo de destino aceita a solicitação. As ACLs de rede devem permitir tráfego de entrada e saída, e os grupos de segurança devem permitir tráfego de entrada para as portas configuradas.
  • Se a solicitação retornar um erro 500, a conexão poderá receber pacotes TCP RST. Verifique se o servidor de back-end está em execução. Verifique se há um serviço em execução no destino de back-end da porta de destino. Verifique se o destino do back-end recebe na porta de destino.
  • Verifique se a opção Aplicar regras de entrada no tráfego do AWS PrivateLink está desativada. Aplicar regras de entrada no tráfego do PrivateLink aplica todas as regras do grupo de segurança de entrada e saída ao tráfego do link da VPC. Se você não configurar o grupo de segurança para permitir o tráfego do link da VPC, o grupo de segurança poderá bloquear o tráfego do API Gateway. Para aplicar regras de grupo de segurança ao tráfego que não vem do link da VPC, desative Aplicar regras de entrada no tráfego do PrivateLink.

Error: Execution failed due to configuration error: Host name 'domain.com.com' does not match the certificate subject provided by the peer (CN=myinstance.com)

Certifique-se de que o nome de domínio do endpoint corresponda ao certificado que o destino do balanceador de carga ativado por TLS retorna.

Error: Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Esse erro ocorre quando o API Gateway não consegue encontrar a autoridade de certificação raiz. Mesmo quando insecureSkipVerification é definido como verdadeiro na propriedade TLSConfig da integração, o API Gateway executa a validação básica do certificado. A validação analisa as seguintes informações:

  • A data de expiração dos certificados
  • O nome do host
  • A presença de uma autoridade de certificação raiz

Os certificados que você configura na instância de destino devem ser confiáveis na lista de provedores de autoridade de certificação compatíveis.

Error: Execution failed due to configuration error: Cannot verify ECDH ServerKeyExchange signature

Esse erro ocorre quando uma chave e o certificado correspondente não coincidem e o handshake TLS falha. Para resolver esse problema, verifique o conteúdo dos arquivos que você usou para suas autoridades de certificação, chaves e certificados configurados.

Error: Execution failed due to an internal error

Esse erro ocorre quando o Amazon API Gateway não se conecta ao balanceador de carga pelo link da VPC porque o destino é redefinido no balanceador de carga. Para resolver esse problema, defina um tempo limite maior no destino do que o tempo limite padrão (350 segundos) que está no balanceador de carga.

Error: Execution failed due to configuration error: Not a valid protocol version: {Text of string}

Esse erro ocorre quando a integração respondeu com uma resposta HTTP que não é válida e não está de acordo com a especificação HTTP. Isso pode significar que o back-end integrado está devolvendo dados que não são válidos para o Amazon API Gateway.

Para solucionar esse erro, realize as seguintes ações:

  • Reproduza a solicitação feita a partir do Amazon API Gateway. Para testar o endpoint de serviço que o Amazon API Gateway usa, crie um endpoint da VPC que esteja vinculado ao ID do endpoint de serviço. Você também pode executar capturas de pacotes para analisar a resposta retornada do back-end integrado.
  • Para evitar criptografia duplicada, altere o protocolo do balanceador de carga para TLS ou TCP, dependendo da resposta do destino.
  • Certifique-se de que insecureSkipVerification esteja definido como verdadeiro na propriedade TLSConfig da integração.

Informações relacionadas

Understanding VPC Links in Amazon API Gateway private Integrations

Monitorar a execução da API REST com métricas do Amazon CloudWatch

Configurar um Network Load Balancer para integrações privadas do API Gateway