Saltar al contenido

¿Cómo utilizo un punto de enlace 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 enlace 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 enlace de VPC de la interfaz para acceder a una API de REST privada de API Gateway que se encuentra en otra cuenta de AWS, completa los siguientes pasos:

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

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

Resolución

Crea un punto de enlace de la interfaz en una Amazon VPC en una cuenta (cuenta A)

Crea un punto de enlace de VPC de interfaz nuevo

Desde la cuenta A, sigue las instrucciones de Creación de un punto de enlace de VPC de la interfaz para API Gateway en tu VPC.

Importante: En Política, elige Acceso completo. Se recomienda utilizar una política de puntos de enlace de VPC para restringir el acceso a los puntos de enlace 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 enlace. Para obtener más información, consulta Aplicar permisos de privilegios mínimos.

Al crear el punto de enlace de la interfaz, considera la posibilidad de llevar a cabo las siguientes acciones:

Recupera el ID del punto de enlace de VPC del punto de enlace de la interfaz

Después de crear el punto de enlace de la interfaz, se muestra el ID del punto de enlace de VPC. Copia el ID del punto de enlace de VPC del nuevo punto de enlace de la interfaz (por ejemplo: vpce-1a2b3c456d7e89012).

Nota: Usa este ID de punto de enlace de VPC al crear y configurar la API de REST privada.

Recupera el nombre de DNS público del punto de enlace de la interfaz

La página Puntos de enlace se muestra en la consola de Amazon VPC. En la pestaña Detalles de la página Puntos de enlace, en la columna Nombres de DNS, busca y copia el nombre de DNS público del punto de enlace de tu interfaz. Por ejemplo: vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com.

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

  1. En la cuenta B, abre la consola de API Gateway.
  2. Selecciona Crear API.
  3. En Elegir un tipo de API, en API de REST privada, elige Crear.
  4. En Detalles de la API, introduce la siguiente información:
    En Nombre de la API, introduce un nombre.
    (Opcional) En Descripción, introduce una descripción.
    Mantén el tipo de punto de enlace establecido en Privado.
    Para los ID de punto de enlace de VPC, introduce el ID de punto de enlace de la interfaz. A continuación, selecciona Agregar.
    Nota: Al asociar el punto de enlace de la interfaz a tu API de REST privada, API Gateway genera un nuevo registro de alias de Amazon Route 53. Puedes utilizar el alias de Route53 para acceder a tu API privada.
  5. Selecciona Crear API.

Para obtener más información, consulta Creación de una API privada.

Configura una política de recursos para la API de REST privada que permita al punto de enlace de la interfaz invocar la API

  1. En el panel de navegación de la consola de API Gateway, en tu API, selecciona Política de recursos.
  2. En la página Política de recursos, introduce 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: Sustituye vpce-1a2b3c456d7e89012 por el ID del punto de enlace de la interfaz.

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

Configuración de un método para la API de REST privada

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

Para obtener más información, consulta Métodos para las API de REST en API Gateway.

Despliegue de la API de REST privada

  1. En el panel Recursos de la consola de API Gateway, elige Acciones y, a continuación, elige Desplegar API.
  2. En el cuadro de diálogo Desplegar API, introduce la siguiente información:
    En Etapa de despliegue, elige [Nueva etapa].
    En Nombre de la etapa, introduce un nombre. Por ejemplo, dev o test.
  3. Selecciona Desplegar.
  4. En el panel Editor de etapas, busca el mensaje Si el DNS privado está activado, utiliza esta URL:. Copia la URL de invocación de la API de REST privada.
    Nota: Usa la URL de invocación de la API de REST privada para probar la configuración.

Para obtener más información, consulta Despliegue de una API privada.

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

  1. En la cuenta A, inicia una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en la misma Amazon VPC que el punto de enlace de la interfaz.
    Importante: Elige el grupo de seguridad que asociaste al punto de enlace de la interfaz.
  2. Conéctate a la instancia de Amazon EC2.
    Nota: Una instancia de EC2 puede incurrir en cargos en tu cuenta de AWS. Si creas una instancia para probarla, termina la instancia cuando termines para evitar que se produzcan otros cargos.
  3. Desde la línea de comandos de tu instancia de EC2, utiliza 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, consulta Invocación de tu API privada mediante nombres de host de DNS públicos específicos de punto de enlace.
    Para un nombre de DNS privado
    Ejecuta el siguiente comando:
    curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name
    
    Nota: Sustituye https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name por la URL de invocación de tu API privada. Este comando solo funciona si has activado el DNS privado para el punto de enlace de la interfaz. Para obtener más información, consulta Invocación de la API privada a través de nombres de DNS privados.
    Para un alias de Route53
    Ejecuta el siguiente comando:
    curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name
    
    Nota: Sustituye a1bc234d5e por el ID de tu API, vpce-1a2b3c456d7e89012 por el ID de punto de enlace de la interfaz y region por la región de tu API. Sustituye stage-name por el nombre de la etapa en la que has desplegado tu API privada. Para obtener más información, consulta Invocación de una API privada con un alias de Route53.
    Para un nombre de DNS público con un encabezado de host
    Ejecuta el siguiente comando:
    curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"
    
    Nota: Sustituye vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com por el nombre de DNS público del punto de enlace de tu interfaz y stage-name por el nombre de la etapa en la que has desplegado tu API privada. Sustituye a1bc234d5e.execute-api.region.amazonaws.com por la URL de invocación de tu API privada.
    Para un nombre de DNS público con el encabezado x-apigw-api-id header
    Ejecuta el siguiente comando:
    curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e"
    
    Nota: Sustituye vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com por el nombre de DNS público del punto de enlace de tu interfaz y stage-name por el nombre de la etapa en la que has desplegado tu API privada. Sustituye a1bc234d5e por el ID de tu API.
  4. Revisa la salida del comando. Si la conexión se lleva a cabo correctamente, API Gateway devuelve una respuesta de 200 OK.

Información relacionada

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

Acceso a un servicio de AWS mediante un punto de enlace de VPC de interfaz

Puerta de enlace de API privada multirregional