Antes de crear una API privada, debe crear un punto de conexión de VPC para API Gateway. A continuación, debe crear la API privada y adjuntarle una política de recursos. Si lo desea, puede asociar el punto de conexión de VPC a la API privada para simplificar la forma de invocar la API. Por último, debe implementar la API.
En los procedimientos siguientes se describe cómo realizar esto. Puede crear una API de REST privada mediante la AWS Management Console, la AWS CLI o un AWS SDK.
Requisitos previos
Para seguir estos pasos, debe tener una VPC completamente configurada. Para obtener información sobre cómo crear una VPC, consulte Crear solo una VPC en la Guía del usuario de Amazon VPC. Para seguir todos los pasos recomendados al crear la VPC, habilite el DNS privado. De esta forma, puede invocar la API dentro de una VPC sin tener que pasar el host o el encabezado x-apigw-api-id
.
Para habilitar el DNS privado, los atributos enableDnsSupport
y enableDnsHostnames
de la VPC deben estar establecidos en true
. Para obtener más información, consulte Compatibilidad de DNS en la VPC y Actualización de la compatibilidad de DNS para la VPC.
Paso 1: Creación de un punto de conexión de VPC para API Gateway en la VPC
En el siguiente procedimiento, se muestra cómo crear un punto de conexión de VPC para API Gateway. Para crear un punto de conexión de VPC para API Gateway, debe especificar el dominio execute-api
para la Región de AWS donde crea la API privada. El dominio execute-api
es el componente de servicio de API Gateway para la ejecución de la API.
Cuando crea el punto de conexión de VPC para API Gateway, debe especificar la configuración de DNS. Si desactiva el DNS privado, solo podrá acceder a la API mediante un DNS público. Para obtener más información, consulte Problema: No puedo conectarme a mi API pública desde un punto de conexión de VPC de API Gateway.
Creación de un punto de conexión de VPC de la interfaz para API Gateway
-
Inicie sesión en la AWS Management Console y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de navegación, en Nube virtual privada, seleccione Puntos de conexión.
-
Elija Crear punto de conexión.
-
(Opcional) Para Etiqueta de nombre, ingrese un nombre que ayude a identificar el punto de conexión de VPC.
-
En Service category (Categoría de servicios), elija AWSServices (Servicios de AWC).
-
En Servicios, en la barra de búsqueda, ingrese
execute-api
. A continuación, elija el punto de conexión del servicio de API Gateway en la Región de AWS en la que creará la API. El nombre del servicio debe tener el mismo aspecto quecom.amazonaws.us-east-1.execute-api
y el Tipo debe ser Interfaz. -
Para VPC, elija la VPC en la que desea crear el punto de conexión.
-
(Opcional) Para desactivar la opción Habilitar el nombre de DNS privado, elija Configuración adicional y, a continuación, desactive Habilitar el nombre de DNS privado.
-
En Subredes, elija las zonas de disponibilidad en las que creó las interfaces de red de punto de conexión. Para mejorar la disponibilidad de la API, elija varias subredes.
-
En Security group (Grupo de seguridad), seleccione el grupo de seguridad que se va a asociar con las interfaces de red de punto de conexión de VPC.
El grupo de seguridad que elija debe configurarse de modo que permita el tráfico HTTPS de entrada en el puerto 443 TCP desde un intervalo de direcciones IP de la VPC o desde otro grupo de seguridad de la VPC.
-
Para Política, realice una de las siguientes operaciones:
Si no ha creado la API privada o no quiere configurar una política de punto de conexión de VPC personalizada, elija Acceso total.
-
Si ya ha creado una API privada y desea configurar una política de punto de conexión de VPC personalizada, puede ingresar una política de punto de conexión de VPC personalizada. Para obtener más información, consulte Uso de políticas de punto de conexión de VPC para API privadas en API Gateway.
Puede actualizar la política de punto de conexión de VPC después de crear el punto de conexión de VPC. Para obtener más información, consulte Actualizar una política de punto de conexión de VPC.
-
Elija Crear punto de conexión.
Copie el ID de punto de conexión de VPC resultante, ya que es posible que lo use en futuros pasos.
Paso 2: crear una API privada
Después de crear el punto de conexión de VPC, se crea una API de REST privada. El siguiente procedimiento muestra cómo crear una API privada.
Creación de una API privada
-
Inicie sesión en la consola de API Gateway, en https://console.aws.amazon.com/apigateway
. -
Seleccione Crear API.
-
En REST API, elija Build (Compilación).
-
En Nombre, ingrese un nombre.
(Opcional) En Description (Descripción), introduzca una descripción.
-
En Tipo de punto de conexión de la API, seleccione Privado.
-
(Opcional) Para los ID de punto de conexión de VPC, ingrese un ID de punto de conexión de VPC.
Si asocia un ID de punto de conexión de VPC a la API privada, puede invocar la API desde dentro de la VPC sin anular un encabezado
Host
ni pasar unx-apigw-api-id header
. Para obtener más información, consulte (Opcional) Asociación o desasociación de un punto de conexión de VPC con una API privada. -
Seleccione Crear API.
Una vez realizados los pasos anteriores, puede seguir las instrucciones en Introducción a la consola de la API de REST para configurar métodos e integraciones para esta API, pero no puede implementar la API. Para implementar la API, siga el paso 3 y adjunte una política de recursos a la API.
Paso 3: Configuración de una política de recursos para una API privada
La API privada actual es inaccesible para todas las VPC. Utilice una política de recursos para conceder a las VPC y puntos de conexión de VPC acceso a las API privadas. Puede conceder acceso a un punto de conexión de VPC en cualquier cuenta de AWS.
La política de recursos debe contener condiciones aws:SourceVpc
o aws:SourceVpce
para restringir el acceso. Le recomendamos que identifique VPC y puntos de conexión de VPC específicos y no cree una política de recursos que permita el acceso a todas las VPC y puntos de conexión de VPC.
El siguiente procedimiento muestra cómo asociar una política de recursos a la API.
Inicie sesión en la consola de API Gateway, en https://console.aws.amazon.com/apigateway
. Elija una API de REST.
-
En el panel de navegación principal, elija Política de recursos.
-
Seleccione Crear política.
-
Elija Seleccionar una plantilla y, a continuación, elija VPC de origen.
-
Sustituya
{{vpcID}}
(incluidas las llaves) por el ID de la VPC. -
Elija Guardar cambios.
Es posible que también desee controlar qué recursos tienen acceso al punto de conexión de VPC. Para controlar qué recursos tienen acceso al punto de conexión de VPC, adjunte una política de punto de conexión al punto de conexión de VPC. Para obtener más información, consulte Uso de políticas de punto de conexión de VPC para API privadas en API Gateway.
(Opcional) Asociación o desasociación de un punto de conexión de VPC con una API privada
Cuando asocia un punto de conexión de VPC con la API privada, API Gateway genera un nuevo registro de DNS de alias de Route 53. Puede usar este registro para invocar las API privadas del mismo modo que las API públicas sin anular un encabezado Host
o pasar un encabezado x-apigw-api-id
.
La URL base generada tiene el siguiente formato:
https://
{rest-api-id}
-{vpce-id}
.execute-api.{region}
.amazonaws.com/{stage}
Puede asociar un punto de conexión de VPC con la API privada cuando la cree o después de crearla. En el siguiente procedimiento, se muestra cómo asociar un punto de conexión de VPC con una API creada anteriormente.
Asociación de un punto de conexión de VPC con una API privada
Inicie sesión en la consola de API Gateway, en https://console.aws.amazon.com/apigateway
. -
Elija la API privada.
-
En el panel de navegación principal, elija Política de recursos.
-
Edite su política de recursos para permitir las llamadas desde su punto de conexión de VPC adicional.
-
En el panel de navegación principal, elija Configuración de la API.
-
En la sección Detalles de la API, elija Editar.
-
En ID de punto de conexión de VPC, seleccione ID de punto de conexión de VPC adicionales.
-
Seleccione Guardar.
-
Vuelva a implementar la API para que los cambios se apliquen.
Paso 4: Implementación de una API privada
Para implementar la API, debe crear una implementación de API y asociarla con una etapa. El siguiente procedimiento muestra cómo implementar la API privada.
Implementación de una API privada
Elija la API.
Elija Implementar API.
En Etapa, seleccione Nueva etapa.
En Nombre de etapa, ingrese un nombre de etapa.
(Opcional) En Description (Descripción), introduzca una descripción.
Elija Deploy (Implementar).
Solución de problemas de la API privada
A continuación, se le proporcionan consejos para solucionar errores y problemas que es posible que se encuentre al crear una API privada.
Problema: No puedo conectarme a mi API pública desde un punto de conexión de VPC de API Gateway
Al crear la VPC, puede configurar los ajustes de DNS. Le recomendamos que active el DNS privado para la VPC. Si elige desactivar el DNS privado, solo puede acceder a la API a través de DNS público.
Si habilita DNS privado, no puede acceder al punto de conexión predeterminado de una API de API Gateway pública desde el punto de conexión de VPC. Puede acceder a una API con un nombre de dominio personalizado.
Si crea un nombre de dominio personalizado regional, utilice un registro de alias de tipo A. Si crea un nombre de dominio personalizado optimizado para sistemas perimetrales, no hay restricciones para el tipo de registro. Puede acceder a estas API públicas con el DNS privado habilitado. Para obtener más información, consulte Problema: Me conecto a mi API pública desde un punto de conexión de VPC de API Gateway
Problema: mi API devuelve {"Message":"User:
anonymous is not authorized to perform: execute-api:Invoke on resource:
arn:aws:execute-api:us-east-1:********/****/****/"}
En la política de recursos, si establece la entidad principal en una entidad principal de AWS, por ejemplo:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", ""Principal": { "AWS": [ "arn:aws:iam::account-id:role/developer", "arn:aws:iam::account-id:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, ... }
Debe usar la autorización de AWS_IAM
para todos los métodos de la API o, de lo contrario, la API devolverá el mensaje de error anterior. Para obtener más instrucciones sobre cómo activar la autorización de AWS_IAM
para un método, consulte Métodos de API de REST en API Gateway.
Problema: No puedo saber si mi punto de conexión de VPC está asociado a mi API
Si asocia o desasocia un punto de conexión de VPC con la API privada, tendrá que volver a implementar la API. Es posible que la operación de actualización tarde unos minutos en completarse debido a la propagación de DNS. Durante este tiempo la API esta disponible, pero es posible que mientras se esté realizando la propagación de DNS para las URL de DNS recién generadas. Si, después de varios minutos, las nuevas URL siguen sin resolverse en DNS, le recomendamos que vuelva a implementar la API.