Como me conecto a um API Gateway privado por meio de uma conexão do Direct Connect?

6 minuto de leitura
0

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:

  1. Abra o console do Amazon VPC.
  2. No painel de navegação, em Nuvem privada virtual, escolha Endpoints.
  3. Para Categoria de serviço, escolha Serviços da AWS.
  4. Em Nome do serviço, pesquise pela palavra-chave “execute-api”. Essa pesquisa retorna um único resultado: “com.amazonaws.REGION.execute-api”.
  5. Selecione “com.amazonaws.REGION.execute-api”.
  6. Para VPC, selecione o Amazon VPC em que sua conexão do Direct Connect está configurada.
  7. Em Sub-redes, selecione as sub-redes nas quais você deseja que a API esteja acessível.
  8. 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.
  9. 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.
  10. 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.
  11. Escolha Criar endpoint.
  12. 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

  1. Abra o console do API Gateway.
  2. Selecione a região da sua conexão do Direct Connect.
  3. Escolha Criar API.
  4. Em Tipo de API, escolha API REST privada.
  5. Em Protocolo de API, escolha REST.
  6. Em Criar uma nova API, escolha Exemplo de API.
  7. Em Configurações, confirme se o Tipo de endpoint está definido como Privado.
  8. Escolha Importar.

Conceda ao endpoint do Amazon VPC permissão para acessar a API REST privada

  1. Na página Gerenciamento de API, escolha Política de recursos.
  2. Copie a política abaixo em sua Política de recursos.
    {
      "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:/*/*/*"
        }
      ]
    }
    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.
    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.
  3. 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:

  1. No console do API Gateway, escolha Recursos no painel de navegação.
  2. Escolha Ações.
  3. Em Ações da API, escolha Implantar API.
  4. Em Estágio de implantação, escolha [Novo estágio].
  5. Insira um nome para o estágio.
  6. 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:

  1. No console do Amazon VPC, escolha Endpoints e selecione o endpoint da VPC que você criou.

  2. Em Detalhes, copie o nome DNS do endpoint da VPC. Por exemplo,
    “vpce-0123456789abcdef-b238e1kf.execute-api.REGION.vpce.amazonaws.com.”

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

  4. 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”.

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

O que é CORS?

Como posso solucionar problemas de roteamento do gateway do Direct Connect?

Como posso configurar um gateway do Direct Connect?

AWS OFICIAL
AWS OFICIALAtualizada há um ano