Como me conecto a um API Gateway privado por meio de uma conexão do Direct Connect?
Quero me conectar a um Amazon API Gateway privado por meio de uma conexão do AWS Direct Connect.
Resolução
Crie um endpoint do Amazon Virtual Private Cloud (Amazon VPC) para o serviço Amazon API Gateway
Um endpoint do Amazon VPC permite que recursos privados em uma VPC se comuniquem com segurança com o serviço API Gateway. Para criar um endpoint do Amazon VPC para o API Gateway, siga estas etapas:
- Abra o console do Amazon VPC.
- No painel de navegação, em Nuvem privada virtual, escolha Endpoints.
- Para Categoria de serviço, escolha Serviços da AWS.
- Em Nome do serviço, pesquise pela palavra-chave “execute-api”. Essa pesquisa retorna um único resultado: “com.amazonaws.REGION.execute-api”.
- Selecione “com.amazonaws.REGION.execute-api”.
- Para VPC, selecione o Amazon VPC em que sua conexão do Direct Connect está configurada.
- Em Sub-redes, selecione as sub-redes nas quais você deseja que a API esteja acessível.
- Em Habilitar nome DNS, desmarque a caixa Habilitar para este endpoint. Desativar essa configuração exige que o Amazon VPC tenha “nomes de host DNS” ativados, o que é um recurso opcional. Deixar essa configuração ativada interrompe todo o acesso às APIs públicas do API Gateway no Amazon VPC implantado se a VPC usar o DNS fornecido pela Amazon.
- Para Grupo de segurança, escolha o grupo de segurança para o endpoint do Amazon VPC. O grupo de segurança deve permitir o acesso na entrada TCP/443 do seu Amazon VPC.
- Em Política, escolha Acesso total. Essa opção permite todas as conexões do seu Amazon VPC com o endpoint da VPC usando as permissões do AWS IAM.
- Escolha Criar endpoint.
- Anote o ID do endpoint do Amazon VPC (por exemplo, “vpce-01234567890abcdef”). Você precisará desse ID mais tarde para editar a política de recursos da API.
Crie sua API REST privada, se você ainda não tiver uma
- Abra o console do API Gateway.
- Selecione a região da sua conexão do Direct Connect.
- Escolha Criar API.
- Em Tipo de API, escolha API REST privada.
- Em Protocolo de API, escolha REST.
- Em Criar uma nova API, escolha Exemplo de API.
- Em Configurações, confirme se o Tipo de endpoint está definido como Privado.
- Escolha Importar.
Conceda ao endpoint do Amazon VPC permissão para acessar a API REST privada
- Na página Gerenciamento de API, escolha Política de recursos.
- Copie a política abaixo em sua Política de recursos.
Substitua a string {{vpceID}} pelo ID do endpoint do Amazon VPC que você anotou após criar o endpoint da VPC. Ou, encontre o ID no console do Amazon VPC em Endpoints.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "{{vpceID}}" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*" } ] }
Observação: esse exemplo de política permite o acesso a todos os recursos na API a partir do seu Amazon VPC. Para restringir ainda mais o acesso, modifique a chave Recurso. - Escolha Salvar.
Implante sua API para confirmar as alterações
Agora que você criou a API e adicionou uma política de recursos, implante a API em um estágio para implementar suas alterações:
- No console do API Gateway, escolha Recursos no painel de navegação.
- Escolha Ações.
- Em Ações da API, escolha Implantar API.
- Em Estágio de implantação, escolha [Novo estágio].
- Insira um nome para o estágio.
- Escolha Implantar. As alterações são implantadas na API. Esse processo pode levar alguns minutos para se propagar.
Teste o acesso à API a partir da conexão do Direct Connect
Siga estas etapas para testar o acesso:
-
No console do Amazon VPC, escolha Endpoints e selecione o endpoint da VPC que você criou.
-
Em Detalhes, copie o nome DNS do endpoint da VPC. Por exemplo,
“vpce-0123456789abcdef-b238e1kf.execute-api.REGION.vpce.amazonaws.com.” -
Em um computador conectado ao seu Amazon VPC usando o Direct Connect, execute um dos seguintes comandos para testar a resolução do nome de host DNS do endpoint da VPC.
Windows PowerShell:
nslookup <YOUR_VPCE_HOSTNAME>
-ou-
MacOS/Unix:
nslookup <YOUR_VPCE_HOSTNAME>
Observação: substitua YOUR_VPCE_HOSTNAME pelo nome do host do endpoint da VPC que você criou anteriormente.
A resposta retorna um endereço IP privado que corresponde ao seu endpoint do Amazon VPC. Se você não receber um endereço IP privado na resposta, verifique o nome do host do endpoint do Amazon VPC no console do Amazon VPC em Endpoints.
-
Se o DNS estiver funcionando, faça uma solicitação de HTTP de teste. Para fazer isso, você precisa do ID da API do console do API Gateway. Copie o ID da API da lista. O ID da API é uma sequência de caracteres, como “chw1a2q2xk”.
-
Em um computador local conectado ao Direct Connect, execute o seguinte comando:
Windows PowerShell:
curl -H @{'x-apigw-api-id' = '<YOUR_API_ID>'} https://<YOUR_VPCE_HOSTNAME>/<STAGE>
-ou-
MacOS/Unix:
curl -IX GET -H 'x-apigw-api-id:<YOUR_API_ID>' https://<YOUR_VPCE_HOSTNAME>/<STAGE>
Observação: substitua YOUR_API_ID pelo ID da sua API REST privada ou pela API que você criou anteriormente. Substitua YOUR_VPCE_HOSTNAME pelo nome do host do endpoint da VPC e STAGE pelo estágio de implantação que você criou anteriormente.
Certifique-se do seguinte:
- A primeira linha da resposta inclui “HTTP/1.1 200 OK”.
- Se você não receber uma resposta, verifique se o grupo de segurança associado ao endpoint do Amazon VPC permite conexões de entrada no TCP/443 a partir do seu endereço IP de origem. Verifique também se sua conexão está usando corretamente sua conexão do Direct Connect.
- Se você receber uma resposta “403 Forbidden”, verifique se você definiu o cabeçalho <YOUR_API_ID>. Confirme se você está enviando uma solicitação GET. Além disso, verifique se o <STAGE> foi adicionado corretamente.
Observação: as aplicações Web do cliente servidos por um domínio diferente dessa API podem interagir com essa API. Nesses casos, o navegador gera uma solicitação prévia do CORS que dificulta a configuração do cabeçalho x-apigw-api-id. Para resolver esse problema, acesse a API privada usando um alias do Route53.
Informações relacionadas
Como posso solucionar problemas de roteamento do gateway do Direct Connect?
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 2 anos