¿Cómo utilizo un punto conexión de VPC de interfaz para acceder a una API de REST privada de API Gateway en otra cuenta?

9 minutos de lectura
0

Quiero usar un punto de conexión de nube virtual privada (VPC) de la interfaz para acceder a una API de REST privada de Amazon API Gateway que se encuentra en otra cuenta de AWS.

Descripción breve

Para usar un punto de conexión de VPC de la interfaz para acceder a una API de REST privada de API Gateway que se encuentra en otra cuenta de AWS, complete los siguientes pasos:

  1. Cree un punto de conexión de la interfaz en una Amazon Virtual Private Cloud (Amazon VPC) en una cuenta (cuenta A).
  2. Cree una API de REST privada de API Gateway en una segunda cuenta (cuenta B).
  3. Configure una política de recursos para la API de REST privada que permita al punto de conexión invocar la API.
  4. Configure un método para la API de REST privada.
  5. Despliegue la API de REST privada.
  6. Llame a la API de REST privada desde la cuenta A para probar la configuración.

Nota: La API de REST privada de Amazon API Gateway y el punto de conexión de VPC deben estar en la misma región de AWS.

Resolución

Cree un punto de conexión de la interfaz en una Amazon VPC en una cuenta (cuenta A)

Cree un punto de conexión de VPC de interfaz nuevo

Desde la cuenta A, siga las instrucciones de Creación de un punto de conexión de VPC de la interfaz para API Gateway execute-api.

Importante: En Política, seleccione Acceso completo. Se recomienda utilizar una política de puntos de conexión de VPC para restringir el acceso a los puntos de conexión mediante el ID de API. También se recomienda utilizar la política de recursos de API Gateway para restringir el acceso de la entidad principal a los puntos de conexión. Para obtener más información, consulte Aplicar permisos de privilegios mínimos.

Al crear el punto de conexión de la interfaz, considere la posibilidad de llevar a cabo las siguientes acciones:

Recupere el ID del punto de conexión de VPC del punto de conexión de la interfaz

Después de crear el punto de conexión de la interfaz, se muestra el ID del punto de conexión de VPC. Copie el ID del punto de conexión de VPC del nuevo punto de conexión de la interfaz (por ejemplo: vpce-1a2b3c456d7e89012). A continuación, seleccione Cerrar.

**Nota:**Use este ID al crear y configurar la API REST privada.

Recupere el nombre de DNS público del punto de conexión de la interfaz

Tras elegir Cerrar, se abre la página Puntos de conexión en la consola de Amazon VPC. En la pestaña Detalles de la página Puntos de conexión, en la columna de nombres DNS, copie el nombre DNS público del punto de conexión de la interfaz, por ejemplo: vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com.

Cree una API de REST privada de API Gateway en una segunda cuenta (cuenta B)

  1. En la cuenta B, abra la consola de API Gateway.
  2. Seleccione Crear API.
  3. En Elegir un tipo de API, en API de REST privada, elija Crear.
  4. En la página Crear, mantenga Elegir el protocolo establecido en ** REST**.
  5. En Crear nueva API, seleccione Nueva API.
  6. En Configuración, introduzca la siguiente información:
    En Nombre de la API, introduzca un nombre.
    (Opcional) En Descripción, introduzca una descripción.
    Mantenga el tipo de punto de conexión establecido en Privado.
    Para los ID de punto de conexión de VPC, ingrese el ID de punto de conexión de la interfaz. A continuación, seleccione Añadir.
    Nota: Al asociar el punto de conexión de la interfaz a su API de REST privada, API Gateway genera un nuevo registro de alias de Amazon Route 53. Puede utilizar el alias de Route53 para acceder a su API privada.
  7.  Seleccione Crear API.

Para obtener más información, consulte Creación de una API privada en Amazon API Gateway.

Configure una política de recursos para la API de REST privada que permita al punto de conexión de la interfaz invocar la API

1.    En el panel de navegación de la consola de API Gateway, en su API, seleccione Política de recursos.

2.    En la página Política de recursos, ingrese el siguiente ejemplo de política de recursos en el cuadro de texto:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpce": "vpce-1a2b3c456d7e89012"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*"
    }
  ]
}

Nota: Sustituya vpce-1a2b3c456d7e89012 por el ID del punto de conexión de la interfaz.

Para obtener más información, consulte Configurar una política de recursos para una API privada.

Configurar un método para la API de REST privada

  1. En el panel de navegación de la consola de API Gateway, en su API, seleccione Recursos.
  2. En el panel Recursos, elija Acciones y, a continuación, elija Crear método.
  3. En la lista desplegable situada debajo del nodo de / resource, elija ANY y, a continuación, elija el icono de marca de verificación.
  4.  En el panel /- ANY - Setup, como Tipo de integración, elija Simulacro.
    Nota: Una integración simulada responde a cualquier solicitud que le llegue.
  5. Elija Guardar.

Para obtener más información, consulte Configurar métodos de API de REST en API Gateway.

Despliegue la API de REST privada

  1. En el panel Recursos de la consola de API Gateway, elija Acciones y, a continuación, elija Desplegar API.
  2. En el cuadro de diálogo Desplegar API, introduzca la siguiente información:
    En Etapa de despliegue, elija [Nueva etapa].
    En Nombre de etapa, introduzca un nombre, por ejemplo dev o test.
  3. Elija Implementar.
  4.  En el panel Stage Editor, busque el mensaje: Si el DNS privado está habilitado, use esta URL:. Copie la URL de invocación de la API de REST privada.
    **Nota:**Use la URL de invocación de la API de REST privada para probar la configuración.

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

Llame a la API de REST privada desde la cuenta A para probar la configuración.

  1. En la cuenta A, inicie una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en la misma Amazon VPC que el punto de conexión de la interfaz.
    Importante:Elija el grupo de seguridad que asoció al punto de conexión de la interfaz.
  2. Conéctese a la instancia de Amazon EC2.
    Nota: Una instancia de EC2 puede incurrir en cargos en su cuenta de AWS. Si crea una instancia para probarla, termine la instancia cuando termine para evitar que se produzcan cargos recurrentes.
  3. Desde la línea de comandos de su instancia de Amazon EC2, utilice cualquiera de los siguientes comandos curl para llamar a la API de REST privada de la cuenta B.
    Nota: Para obtener más información, consulte Invocación de su API privada mediante nombres de host de DNS públicos específicos de punto de conexión. Para obtener más información sobre curl, consulte el sitio web del proyecto curl.

Para un nombre de DNS privado

Ejecute el comando siguiente:

curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name

**Nota:Sustituya ** https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name por la URL de invocación de su API privada. Este comando solo funciona si ha activado el DNS privado para el punto de conexión de la interfaz. Para obtener más información, consulte Invocación de la API privada a través de nombres de DNS privados.

Para un alias de Route 53 

Ejecute el comando siguiente:

curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name

Nota: Sustituya a1bc234d5e por el ID de su API, vpce-1a2b3c456d7e89012 por el ID de punto de conexión de la interfaz y región por la región de su API. Reemplace el stage-name por el nombre de la etapa en la que desplegó su API privada. Para obtener más información, consulte Acceso a la API privada a través de un alias de Route53.

Para un nombre de DNS público con un encabezado de host

Ejecute el comando siguiente:

curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"

Nota: Sustituya vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com por el nombre de DNS público del punto de conexión de su interfaz y el nombre de etapa por el nombre de la etapa en la que implementó su API privada. Sustituya a1bc234d5e.execute-api.region.amazonaws.com por la URL de invocación de su API privada.

Para un nombre de DNS público con el encabezado x-apigw-api-id

Ejecute el comando siguiente:

curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e"

Nota: Sustituya vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com por el nombre de DNS público del punto de conexión de su interfaz y el nombre de etapa por el nombre de la etapa en la que implementó su API privada. Reemplace a1bc234d5e por el ID de su API.

4.    Revise el resultado del comando. API Gateway devuelve una respuesta de 200 OK si la conexión se lleva a cabo correctamente.

Información relacionada

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

Acceso a un servicio de AWS mediante un punto de conexión de VPC de interfaz

Puerta de enlace de API privada multirregional