Ao usar o AWS re:Post, você concorda com os AWS re:Post Termos de uso

Como faço para usar um Application Load Balancer ou um Network Load Balancer para invocar uma API privada do API Gateway?

6 minuto de leitura
0

Quero configurar minha API privada do Amazon API Gateway como destino de um balanceador de carga. Depois, quero usar uma conta da AWS para acessar a API privada a partir de um Application Load Balancer ou Network Load Balancer.

Resolução

Para acessar sua API privada por meio do AWS Direct Connect ou o Amazon Route 53, consulte Invocar uma API privada. Você também pode usar um endpoint da nuvem privada virtual (VPC) de interface para acessar uma API REST privada do API Gateway em outra conta do AWS.

A resolução a seguir usa um endereço IP de uma interface de rede elástica de um endpoint da Amazon Virtual Private Cloud (Amazon VPC). Com esse endereço IP, você pode adicionar sua API privada como destino do balanceador de carga.

Importante: a APIs Gateway não é compatível com nomes de domínio personalizados nas APIs privadas. Como alternativa, você pode invocar e anexar o domínio a um balanceador de carga. Em seguida, use a configuração a seguir para invocar a API privada.

Crie um endpoint do Amazon VPC

Conclua as seguintes etapas:

  1. Abra o console da Amazon VPC.
  2. Escolha Endpoints e, em seguida, escolha Criar endpoint.
  3. Insira as informações a seguir:
    Em Serviços, escolha com.amazonaws.com.your-region.execute-api.
    Em VPC, selecione sua Amazon VPC.
    Para ** sub-redes**, selecione duas sub-redes em diferentes zonas de disponibilidade (AZ IDs).
    Observação: se você já tiver algum endpoint do Amazon VPC já configurado com o execute-api na sua VPC, desative o DNS privado.
  4. Selecione Criar endpoint.
  5. Selecione seu endpoint, escolha sub‑redes e copie o endereço IP.

Para obter mais informações, consulte APIs REST privadas no API Gateway.

Crie uma API REST privada e conceda permissão ao endpoint do Amazon VPC

Conclua as seguintes etapas:

  1. Abra o console da API Gateway e escolha Criar API.
  2. Em API REST, escolha Criar.
  3. Em Configurações, insira as informações a seguir:
    Em Nome da API, insira um nome para a API.
    Em Tipo de endpoint, escolha Privado.
    Em IDs de endpoint, insira o ID do endpoint que você criou.
  4. Escolha Criar API.
  5. No painel de navegação, escolha Política de recurso.
  6. Insira a política a seguir:
    {
      "Version": "2012-10-17",  "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*",
          "Condition": {
            "StringNotEquals": {
              "aws:SourceVpce": "vpce-081234d1ad408e"
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*"
        }
      ]
    }
    Observação: Substitua vpce-081234d1ad408e pelo ID do seu endpoint da VPC. Além disso, substitua arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID pelo Nome de recurso da Amazon (ARN) da sua API.
  7. Escolha Salvar.

Crie ou importe um certificado público do AWS Certificate Manager

Solicite um certificado público ou importe um certificado.

Crie um Application Load Balancer ou um Network Load Balancer

Crie um Application Load Balancer ou um Network Load Balancer.

Crie o grupo de destino

Conclua as seguintes etapas:

  1. Abra o console do Amazon Elastic Compute Cloud (Amazon EC2).
  2. No painel de navegação em Balanceamento de carga , escolha Balanceadores de carga, depois, escolha Grupos de destino.
  3. Escolha Criar grupo de destino.
  4. Insira as informações a seguir:
    Em tipo de destino, escolha Endereços IP.
    Em Nome do grupo de destino, insira um nome.
    Application Load Balancer
    Em Protocolo, escolha HTTPS.
    Em Porta, escolha 443.
    Em VPC, selecione sua VPC.
    Em Caminho de verificação de integridade, digite “/” e em Códigos de sucesso, insira 200,403 para que o endpoint VPC apareça como Saudável.
    Network Load Balancer
    Em Protocolo, escolha TLS.
    Em Porta, escolha 443.
    Em VPC, selecione sua VPC.
  5. Escolha Avançar.
  6. Em Especificar IPs, insira o endereço IP que você copiou na seção ** Criar uma interface endpoint da VPC Amazon**. Em seguida, escolha Adicionar endereço IPv4.
  7. Escolha Criar grupo de destino.

Configure o balanceador de carga

Conclua as seguintes etapas:

  1. Abra o console do EC2.
  2. No painel de navegação, escolha Balanceadores de carga, e em seguida, escolha Criar balanceador de carga.
    Application Load Balancer
    Para Esquema, escolha Voltado para a Internet ou Interno, dependendo da sua configuração.
    Em Protocolo, escolha HTTPS.
    Em VPC e sub‑redes, selecione sua VPC e sub‑redes.
    Network Load Balancer
    Para Esquema, escolha Voltado para a Internet ou Interno, dependendo da sua configuração.
    Em Protocolo, escolha TLS.
    Em VPC e sub‑redes, selecione sua VPC e sub‑redes.
    Em Política de segurança, selecione a política padrão ELBSecurityPolicy-TLS (recomendado).
    Em Certificado SSL/TLS padrão, escolha Do ACM.
    Escolha Selecionar um certificado e, em seguida, selecione seu certificado.
  3. Selecione Criar balanceador de carga.
    Observação: os destinos do balanceador de carga estão nos endereços IP da interface de rede elástica que o endpoint da VPC criou. Para encontrar as interfaces de rede elástica, selecione seu endpoint da VPC e, em seguida, abra a guia Sub‑redes.

Crie um registro em uma zona hospedada pública ou privada do Amazon Route 53

Crie uma zona hospedada pública ou uma zona hospedada privada. Em seguida, crie um registro CNAME ou alias e associe-o ao Application ou ao Network Load Balancer.

Crie um domínio personalizado

Crie um domínio personalizado no console do API Gateway. Em seguida, mapeie a API Private Rest no domínio personalizado.

Como testar

Para balanceadores de carga públicos, faça uma solicitação curl em sua máquina local. No caso de balanceadores de carga privados, execute uma nova instância do EC2 em uma das sub‑redes do seu balanceador de carga. Em seguida, faça uma solicitação curl semelhante a esta:

curl -v https://{custom-domain-name}/<resource-path>

Uma solicitação bem‑sucedida retorna um código de resposta 200 OK. Uma solicitação malsucedida retorna um código de resposta 403 Forbidden ou um erro de resolução de DNS. Se encontrar problemas, consulte Solução de problemas do Application Load Balancer.

Informações relacionadas

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

Como soluciono problemas ao me conectar a um endpoint de API privada do API Gateway?

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

Configure o registro do CloudWatch para APIs REST no API Gateway