¿Cómo puedo invocar una API privada de API Gateway mediante un equilibrador de carga de aplicación o de red?

6 minutos de lectura
0

Quiero configurar mi API privada de Amazon API Gateway como destino detrás de un equilibrador de carga. A continuación, quiero utilizar una cuenta de AWS para acceder a mi API privada desde una aplicación o un equilibrador de carga de red.

Breve descripción

Para acceder a su API privada mediante AWS Direct Connect o Amazon Route 53, consulte Cómo invocar una API privada. También puede acceder a una API de REST privada de API Gateway en otra cuenta de AWS mediante un punto de conexión de VPC de una interfaz.

En la siguiente solución se utiliza una dirección IP de una interfaz de red elástica de punto de conexión de Amazon Virtual Private Cloud (Amazon VPC). Con esta dirección IP, se puede añadir la API privada como destino al equilibrador de carga.

Importante: API Gateway no admite nombres de dominio personalizados para las API privadas. Como solución alternativa, se puede invocar el dominio y asociarlo a un equilibrador de carga. A continuación, utilice la siguiente configuración para invocar la API privada.

Solución

Creación de un punto de conexión de Amazon VPC

1.    Abra la consola de Amazon VPC.

2.    Seleccione Puntos de conexión y, a continuación, Crear punto de conexión.
Nota: Si ya tiene configurado algún punto de conexión de VPC de Amazon en la VPC con la API execute-api, desactive el DNS privado.

3.    En Servicios, seleccione com.amazonaws.com.su-región.execute-api.

4.    En VPC, seleccione su Amazon VPC.

5.    En Subredes, elija dos subredes en diferentes zonas de disponibilidad (ID de las zonas de disponibilidad) y, a continuación, seleccione Crear punto de conexión.

6.    Seleccione el punto de conexión, elija las subredes y, a continuación, copie la dirección IP.

Para obtener más información, consulte Creación de un punto de enlace de la VPC de la interfaz para API Gateway execute-api.

Creación de una API de REST privada y concesión del permiso de punto de conexión de Amazon VPC

1.    Abra la consola de API Gateway y, a continuación, seleccione Crear API.

2.    En API de REST, seleccione Crear.

3.    En Configuración, introduzca la siguiente información: 
En Nombre de API, introduzca un nombre para la API.
En Tipo de punto de conexión, seleccione Privado.
En ID de punto de enlace, introduzca el ID del punto de conexión que ha creado.

4.    Seleccione Crear API.

5.    En el panel de navegación, seleccione Política de recursos.

6.    En el editor de políticas de recursos, pegue la siguiente política:

{
  "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/*/*/*"
    }
  ]
}

Nota: Sustituya vpce-081234d1ad408e por el ID de su punto de conexión de VPC. Sustituya arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID por el ARN de su API.

7.    Seleccione Guardar.

Para obtener más información, consulte Crear una API privada mediante la consola de API Gateway.

Creación o importación de un certificado público de AWS Certificate Manager

Solicite un certificado público o importe un certificado.

Creación de un equilibrador de carga de aplicación o un equilibrador de carga de red

Cree un equilibrador de carga de aplicación o un equilibrador de carga de red.

Creación del grupo de destino

1.    Abra la consola de Amazon Elastic Compute Cloud (Amazon EC2).

2.    En el panel de navegación, en Equilibrio de carga, seleccione Equilibradores de carga y, a continuación, Grupos de destino.

3.    Seleccione Crear grupo de destino.

4.    En Tipo de destino, seleccione Direcciones IP.

5.    En Nombre del grupo de destino, introduzca un nombre.

Equilibrador de carga de aplicación

En Protocolo, seleccione HTTPS.
En Puerto, seleccione 443.
En VPC, seleccione su VPC.
En Ruta de comprobación de estado, introduzca 200,403 para que el punto de conexión de VPC aparezca como En buen estado en el grupo de destino.

Equilibrador de carga de red

En Protocolo, seleccione TLS.
En Puerto, seleccione 443.
En VPC, seleccione su VPC.

6.    Elija Siguiente.

7.    En Specify IPs, introduzca la dirección IP que copió en la sección Creación de un punto de conexión de Amazon VPC de la interfaz y, a continuación, seleccione Add IPv4 address.

8.    Seleccione Crear grupo de destino.

Configuración del equilibrador de carga

1.    Abra la consola de EC2.

2.    En el panel de navegación, seleccione Equilibradores de carga y, a continuación, Crear equilibrador de carga.

Equilibrador de carga de aplicación

En Esquema, seleccione Con acceso a Internet o Interno según la configuración.
En Protocolo, seleccione HTTPS.
En VPC y subredes, seleccione la VPC y las subredes.

Equilibrador de carga de red

En Esquema, seleccione Con acceso a Internet o Interno según la configuración.
En Protocolo, seleccione TLS.
En VPC y subredes, seleccione la VPC y las subredes.
En Política de seguridad, seleccione la política predeterminada ELBSecurityPolicy-TLS (recomendada).
En Default SSL/TLS certificate, seleccione De ACM.
Elija el menú desplegable Seleccionar un certificado y, a continuación, elija el certificado.

3.    Seleccione Crear equilibrador de carga.

Nota: Los destinos del equilibrador de carga se encuentran en las direcciones IP de la interfaz de red elástica creada por el punto de conexión de VPC. Para encontrar esas interfaces de red elástica, seleccione el punto de conexión de VPC y, a continuación, abra la pestaña Subredes.

Creación de un registro en una zona alojada pública o privada de Amazon Route 53

Cree una zona alojada pública o privada.

A continuación, cree un registro CNAME y asócielo a su equilibrador de carga de aplicación o de red.

Realización de pruebas

En el caso de los equilibradores de carga públicos, se puede realizar una solicitud de curl desde el equipo local.

En el caso de los equilibradores de carga privados, inicie una nueva instancia de EC2 en una de las subredes de su equilibrador de carga. A continuación, realice una solicitud de curl similar a la siguiente:

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'Host: <api-id>.execute-api.<region>.amazonaws.com'

Alternativa:

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'x-apigw-api-id:{api-id}'

Si la solicitud es satisfactoria, devolverá el código de respuesta 200 OK. Si la solicitud no es satisfactoria, devolverá el código de respuesta 403 Forbidden o un error de resolución del DNS. Si tiene algún problema, consulte Troubleshoot your load balancers.

Información relacionada

How do I connect to a private API Gateway over a Direct Connect connection?

¿Cómo soluciono los problemas al conectarme a un punto de conexión de la API privada de API Gateway?

Monitoreo de la ejecución de la API de REST con métricas de Amazon CloudWatch

Configuración del registro de CloudWatch para una API de REST en API Gateway

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año