Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Como soluciono problemas ao me conectar a um endpoint de API privada do API Gateway?
Quero solucionar problemas ao me conectar ao meu endpoint privado de API do Amazon API Gateway que está na Amazon Virtual Private Cloud (Amazon VPC).
Breve descrição
Recursos da AWS na Amazon VPC podem falhar ao se conectar a um endpoint privado de API pelos seguintes motivos:
- Você não configurou corretamente a política de recursos do API Gateway para o endpoint privado de API.
- Você não configurou corretamente a política de endpoint da VPC para o endpoint da VPC de interface.
- Você não configurou corretamente as regras para um grupo de segurança da Amazon VPC.
- A URL de invocação da API privada não inclui os nomes de DNS corretos.
- Você não associou o nome de domínio personalizado privado a um endpoint da VPC.
- Você não configurou corretamente a política de recursos para o nome de domínio personalizado privado.
Para identificar a causa, é possível ativar o Amazon CloudWatch Logs para sua API e analisar os logs.
Se a solicitação da API não gerar logs após você ativar o CloudWatch Logs, significa que a solicitação não chegou ao endpoint. Se suas solicitações de API não chegarem ao endpoint, verifique se você configurou corretamente a URL de invocação da API privada.
Para obter mais informações, consulte Como encontro erros da API REST do API Gateway em meus logs do CloudWatch?
Observação: uma política de recursos do API Gateway configurada incorretamente ou um nome DNS incorreto na URL de invocação do endpoint privado de API podem causar problemas de conexão.
Resolução
Confirme a causa do problema
Conclua as etapas a seguir:
- Ative o CloudWatch Logs na sua API REST privada.
- Em Nível do log, selecione INFO e, em seguida, clique em Registrar em log dados completos de solicitações/respostas.
- Visualize os logs de execução da sua API REST no CloudWatch para identificar a causa do problema.
Se as solicitações da API chegarem ao endpoint, uma mensagem de erro semelhante a uma das seguintes aparecerá:
- "User: anonymous is not authorized to perform: execute-api:Invoke on resource:"
- "SSL: no alternative certificate subject name matches target host name custom-domain.com/resource"
- "Connection timed out"
- "Could not resolve host: https://example.com/resource"
"User: anonymous is not authorized to perform: execute-api:Invoke on resource:"
Para resolver esse problema, configure as seguintes políticas:
- A política de recursos do API Gateway da API privada deve permitir o tráfego do endpoint da VPC de interface ou da VPC de origem para o endpoint da API.
- A política de endpoint da VPC deve permitir que o cliente acesse o endpoint privado de API. Essa é a política de recursos para o serviço execute-api.
- A política de recursos do nome de domínio personalizado deve permitir o acesso aos seus endpoints da VPC para invocar o seu nome de domínio personalizado privado. Normalmente, o API Gateway provisiona um nome de domínio personalizado com uma negação explícita na política de recursos do nome de domínio personalizado. Para obter mais informações, consulte Tutorial: como criar e invocar um nome de domínio personalizado para APIs privadas.
Importante: se você modificar a política de recursos da sua API, implante sua API no estágio para salvar as alterações.
"SSL: no alternative certificate subject name matches target host name custom-domain.com/resource"
Para resolver este problema, verifique se você criou associações de acesso ao nome de domínio personalizado privado do seu endpoint da VPC privado para o serviço execute-api.
"Connection timed out"
Para resolver problemas de tempo limite de conexão, conclua as seguintes etapas:
-
Verifique se um endpoint da VPC execute-api do API Gateway existe na VPC onde você hospeda seu cliente. Em seguida, certifique-se de que o endpoint esteja na mesma região da AWS que a API privada. Se o endpoint não existir, então crie um endpoint da VPC de interface para o API Gateway execute-api.
-
Use o traceroute para verificar se o cliente que invoca a API privada está na mesma VPC ou pode acessar a VPC com o endpoint da VPC.
Para instalar o traceroute, execute os seguintes comandos:
Amazon Linux:
sudo yum install tracerouteUbuntu:
sudo apt-get install traceroutePara usar o traceroute para testar a conectividade, execute o seguinte comando:
sudo traceroute -n -T -p 443 VPC-endpoint IP-addressObservação: o argumento -T -p 443 -n executa um rastreamento baseado em TCP na porta 443. Substitua VPC-endpoint IP-address pelo endereço IP do seu endpoint da VPC.
-
Verifique se você configurou corretamente as regras para os seus grupos de segurança da Amazon VPC.
Para testar seus grupos de segurança da Amazon VPC, execute o seguinte comando do cliente que faz solicitações para o endpoint privado de API:telnet public-dns-hostname.execute-api.region.vpce.amazonaws.com 443Observação: substitua public-dns-hostname pelos nomes de host DNS públicos que contêm o ID do endpoint da VPC da sua API. Além disso, substitua region pela Região em que seu endpoint da VPC de interface está localizado.
Ou execute o seguinte comando do cliente que faz solicitações para o nome de domínio personalizado da API privada:
telnet custom-domain-name 443Observação: substitua custom-domain-name pelo nome de domínio personalizado da sua API privada.
Se a conexão ultrapassar o tempo limite, significa que você não configurou corretamente as regras para os seus grupos de segurança da Amazon VPC.
O recurso solicitante deve ter uma regra de grupo de segurança que permita o tráfego de saída na porta TCP 443 para o intervalo de endereços IP ou grupo de segurança do endpoint da VPC. Além disso, o endpoint da VPC deve ter uma regra de grupo de segurança que permita o tráfego de entrada na porta TCP 443 a partir do intervalo de endereços IP ou do grupo de segurança do recurso que está fazendo a solicitação.
Para obter mais informações, consulte Como faço para restringir o tráfego de e para os recursos da Amazon VPC?
"Could not resolve host:https://www.example.com/resource"
Para resolver esse problema, execute as seguintes ações:
- Verifique se você associou a VPC correta à sua zona hospedada do Amazon Route 53.
- Verifique se você criou o registro para o seu nome de domínio personalizado na zona hospedada do Route 53 com o destino como alias para o nome DNS do seu endpoint da VPC.
Teste se o domínio do endpoint privado de API é resolvido corretamente para o endereço IP do endpoint da VPC
Observação: certifique-se de que o cliente esteja dentro da VPC onde o endpoint da VPC execute-api existe.
Conclua as etapas a seguir:
- Execute o seguinte comando nslookup a partir do cliente que faz solicitações ao endpoint privado de API:
Observação: substitua restapi-id pelo ID da sua API privada e region pela Região em que seu endpoint privado de API está localizado.nslookup restapi-id.execute-api.region.amazonaws.com - Execute o seguinte comando nslookup a partir do cliente que faz solicitações para o nome de domínio personalizado da API privada. :
Observação: substitua custom-domain-name pelo nome de domínio personalizado da sua API privada. Uma saída bem-sucedida mostra os endereços IP privados do endpoint da VPC.nslookup custom-domain-name - Execute o seguinte comando nslookup:
Observação: substitua public-dns-hostname pelos nomes de host DNS públicos que contêm o ID do endpoint da VPC da sua API. Substitua region pela Região em que seu endpoint da VPC de interface está localizado. Uma saída bem-sucedida mostra os endereços IP privados do endpoint da VPC.nslookup public-dns-hostname.execute-api.region.vpce.amazonaws.com - Compare os endereços IP nas saídas de cada comando. Se os endereços IP de cada saída de comando corresponderem, a configuração está funcionando conforme o esperado.
Para ativar o DNS privado no seu endpoint da VPC, conclua as etapas a seguir.
- Abra o console da Amazon VPC.
- No painel Endpoints, selecione seu endpoint da VPC de interface.
- Clique em Ações.
- Selecione Modificar nomes DNS privados.
- Clique em Habilitar nome de DNS privado e, em seguida, selecione Salvar alterações.
A solicitação da API não produz nenhum CloudWatch Log depois que você ativa o CloudWatch Logs
Para resolver esse problema, execute as seguintes ações:
- Configure corretamente a política de recursos do API Gateway do endpoint privado de API.
- Formate corretamente o URL de invocação da sua API privada para acessar o endpoint privado de API.
Observação: se você ativou um DNS privado, você deve usar nomes de host DNS públicos específicos do endpoint. Se você não ativou um DNS privado, use nomes de DNS privados. - Mapeie o nome de domínio personalizado da API privada para o estágio correto da API.
Informações relacionadas
How do I monitor traffic in my VPC with flow logs? (Como monitorar o tráfego na minha VPC com logs de fluxo?)
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 4 meses