Creación de una API privada en Amazon API Gateway - Amazon API Gateway

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de una API privada en Amazon API Gateway

Mediante Amazon API Gateway, puede crear API REST privadas a las que solo se puede acceder desde la nube virtual privada en Amazon VPC mediante un punto de enlace de la VPC de interfaz. Se trata de una interfaz de red de punto de enlace que se crea en la VPC.

Con las políticas de recursos, puede permitir o denegar el acceso a su API desde VPC y puntos de enlace de VPC seleccionados, incluso en todas las cuentas. AWS Cada punto de enlace se puede utilizar para tener acceso a varias API privadas. También puedes usarlo AWS Direct Connect para establecer una conexión desde una red local a Amazon VPC y acceder a tu API privada a través de esa conexión.

importante

Para restringir el acceso a la API privada a VPC o puntos de conexión de VPC específicos, agregue condiciones aws:SourceVpc o aws:SourceVpce a la política de recursos de la API. Para ver ejemplos de políticas, consulte Ejemplo: Permitir el tráfico de una API privada en función del punto de enlace de la VPC o la VPC de origen.

En cualquier caso, el tráfico dirigido a la API privada utilizará conexiones seguras y no saldrá de la red de Amazon, ya que está aislado de la red pública de Internet.

Puede obtener acceso a la API privada a través de los puntos de enlace de la VPC de la interfaz de API Gateway, tal y como se muestra en el siguiente diagrama. Si tiene un DNS privado habilitado, puede usar nombres de DNS privados o públicos para obtener acceso a las API. Si tiene un DNS privado que está deshabilitado, solo podrá utilizar nombres de DNS públicos.

nota

Las API privadas de API Gateway solo son compatibles con TLS 1.2. No se admiten versiones de TLS anteriores.


            Acceso a una API privada con un DNS privado habilitado

A grandes rasgos, los pasos para crear una API privada serían los siguientes:

  1. En primer lugar, cree un punto de enlace de la VPC de la interfaz para el componente de servicio de API Gateway encargado de la ejecución de la API, llamado execute-api, en la VPC.

  2. Cree y pruebe la API privada.

    1. Utilice uno de los siguientes procedimientos para crear la API:

    2. Para conceder acceso al punto de enlace de la VPC, cree una política de recursos y asóciela a la API.

    3. Pruebe la API.

nota

En los procedimientos siguientes, se presupone que ya tiene una VPC completamente configurada. Para obtener más información, y para empezar a crear una VPC, consulte Introducción a Amazon VPC en la guía del usuario de Amazon VPC.

Consideraciones sobre el desarrollo de las API privadas

  • Puede convertir una API pública existente (regional u optimizada para límites) en una API privada; también puede convertir una API privada en una API regional. Sin embargo, no puede convertir una API privada en una API optimizada para límites. Para obtener más información, consulte Cambiar el tipo de punto de enlace de una API pública o privada en API Gateway.

  • Para que las VPC y los puntos de enlace de la VPC puedan obtener acceso a la API privada, es necesario que cree una política de recursos y la asocie a la API que acaba de crear (o convertir). Hasta entonces, se producirán errores en todas las llamadas a la API. Para obtener más información, consulte Configurar una política de recursos para una API privada.

  • Los nombres de dominio personalizados no son compatibles con las API privadas.

  • Puede utilizar un único punto de enlace de VPC para obtener acceso a varias API privadas.

  • Puede asociar o desasociar un punto de enlace de la VPC a una API REST, lo cual proporciona un registro de DNS de alias de Route 53 y simplifica la llamada a la API privada. Para obtener más información, consulte el artículo Asociar o desasociar un punto de enlace de la VPC a una API REST privada.

nota

Los puntos de enlace de la VPC de las API privadas están sujetos a las mismas limitaciones que otros puntos de enlace de la VPC de tipo interfaz. Para obtener más información, consulte Propiedades y limitaciones de los puntos de conexión de interfaz en la Guía de AWS PrivateLink . Para obtener más información sobre cómo utilizar API Gateway con VPC compartidas y subredes compartidas, consulte Subredes compartidas en la Guía de AWS PrivateLink .

Creación de un punto de enlace de la VPC de la interfaz para API Gateway execute-api

El componente de servicio de API Gateway encargado de la ejecución de la API se llama execute-api. Para obtener acceso a la API privada una vez que se ha implementado, tendrá que crear un punto de enlace para ella en la VPC.

Una vez que haya creado el punto de enlace de la VPC, podrá utilizarlo para obtener acceso a varias API privadas.

Si desea crear un punto de enlace de la VPC de la interfaz para API Gateway execute-api
  1. Inicie sesión en la consola de Amazon VPC AWS Management Console y ábrala en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Endpoints, Create Endpoint.

  3. En Service category (Categoría de servicio), asegúrese de que se seleccionó AWS services (Servicios de AWS ).

  4. En Nombre del servicio, elija el punto final del servicio API Gateway, incluida la AWS región a la que desea conectarse. Esto está en la forma com.amazonaws.region.execute-api, por ejemplo, com.amazonaws.us-east-1.execute-api.

    En Type, asegúrese de que el valor es Interface.

  5. Rellene los datos siguientes:

    • Para VPC, elija la VPC en la que desea crear el punto de enlace.

    • En Subnets (Subredes), seleccione las subredes (zonas de disponibilidad) en las que va a crear las interfaces de red de punto de enlace. Para mejorar la disponibilidad de la API, elija varias subredes.

      nota

      Es posible que algunos servicios de AWS no puedan usarse en todas las zonas de disponibilidad.

    • En Enable Private DNS Name (Habilitar nombre DNS privado), deje la casilla seleccionada. El DNS privado está habilitado de forma predeterminada.

      Cuando el DNS privado está habilitado, puede obtener acceso a su API a través de un DNS privado o público. (Esta configuración no tiene efecto sobre las personas que pueden obtener acceso a la API, sino solamente qué direcciones DNS pueden usar). Sin embargo, no puede obtener acceso a las API públicas desde una VPC utilizando un punto de enlace de la VPC de API Gateway con DNS privado habilitado. Tenga en cuenta que esta configuración de DNS no afecta a la capacidad de llamar a estas API públicas desde la VPC si usa un nombre de dominio personalizado optimizado para el borde con el fin de obtener acceso a la API pública. El uso de un nombre de dominio personalizado optimizado para el borde con el fin de obtener acceso a su API pública (mientras utiliza DNS privado para obtener acceso a su API privada) es una forma de obtener acceso tanto a las API públicas como a las privadas desde una VPC en la que el punto de enlace se ha creado con DNS privado habilitado.

      nota

      La opción recomendada es dejar habilitado el DNS privado. Si decide no habilitar el DNS privado, solo uede obtener acceso a la API a través de DNS públicos. Para obtener más información, consulte Cómo invocar una API privada.

      Para utilizar la opción de 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 su VPC y Actualización de la compatibilidad de DNS para su VPC en la guía del usuario de Amazon VPC.

    • En Security group (Grupo de seguridad), seleccione el grupo de seguridad que se va a asociar con las interfaces de red de punto de enlace de la 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.

  6. Elija Create endpoint.

Crear una API privada mediante la consola de API Gateway

Para crear una API privada mediante la consola de API Gateway
  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. Seleccione Create API (Crear API).

  3. En REST API, elija Build (Compilación).

  4. En Nombre, ingrese un nombre.

  5. (Opcional) En Description (Descripción), introduzca una descripción.

  6. En Tipo de punto de conexión de la API, seleccione Privado.

  7. Seleccione Create API (Crear API).

A partir de este punto, puede configurar los métodos de la API y sus integraciones asociadas tal y como se describe en los pasos 1 a 6 de Crear una API con integración de HTTP personalizada.

nota

Hasta que la API tenga una política de recursos que conceda acceso a la VPC o al punto de enlace de la VPC, se producirán errores en todas las llamadas a la API. Antes de probar e implementar la API, tiene que crear una política de recursos y asociarla a la API tal y como se describe en Configurar una política de recursos para una API privada.

Cree una API privada mediante el AWS CLI

Para crear una API privada mediante el AWS CLI, ejecuta el create-rest-api comando:

aws apigateway create-rest-api \ --name 'Simple PetStore (AWS CLI, Private)' \ --description 'Simple private PetStore API' \ --region us-west-2 \ --endpoint-configuration '{ "types": ["PRIVATE"] }'

Una llamada correcta devuelve un resultado similar al siguiente:

{ "createdDate": "2017-10-13T18:41:39Z", "description": "Simple private PetStore API", "endpointConfiguration": { "types": "PRIVATE" }, "id": "0qzs2sy7bh", "name": "Simple PetStore (AWS CLI, Private)" }

A partir de aquí, puede seguir las mismas instrucciones dadas en Configurar una API optimizada para bordes mediante comandos de AWS CLI para configurar métodos e integraciones para esta API.

Cuando esté listo para probar la API, no olvide crear una política de registros y asociarla a la API tal y como se describe en Configurar una política de recursos para una API privada.

Cree una API privada con el AWS SDK para JavaScript

Para crear una API privada mediante el AWS SDK para JavaScript:

apig.createRestApi({ name: "Simple PetStore (node.js SDK, private)", endpointConfiguration: { types: ['PRIVATE'] }, description: "Demo private API created using the AWS SDK for node.js", version: "0.00.001" }, function(err, data){ if (!err) { console.log('Create API succeeded:\n', data); restApiId = data.id; } else { console.log('Create API failed:\n', err); } });

Una llamada correcta devuelve un resultado similar al siguiente:

{ "createdDate": "2017-10-13T18:41:39Z", "description": "Demo private API created using the AWS SDK for node.js", "endpointConfiguration": { "types": "PRIVATE" }, "id": "0qzs2sy7bh", "name": "Simple PetStore (node.js SDK, private)" }

Una vez realizados los pasos anteriores, puede seguir las instrucciones en Configurar una API optimizada para bordes con el SDK de AWS para Node.js para configurar métodos e integraciones para esta API.

Cuando esté listo para probar la API, no olvide crear una política de registros y asociarla a la API tal y como se describe en Configurar una política de recursos para una API privada.

Configurar una política de recursos para una API privada

Antes de que se pueda acceder a su API privada, debe crear una política de recursos y asociarla a la API. Esto concede acceso a la API desde tus VPC y puntos de enlace de VPC o desde VPC y puntos de enlace de VPC de otras cuentas a las que concedas acceso de forma explícita. AWS

Para ello, siga las instrucciones que se indican en Creación y asociación de una política de recursos de API Gateway a una API. En el paso 5, elija el ejemplo de VPC de origen. Sustituya {{vpceID}} (incluidas las llaves) por el ID del punto de enlace de la VPC y, a continuación, elija Save (Guardar) para guardar la política de recursos.

También debe considerar la opción de asociar una política de punto de enlace al punto de enlace de la VPC para especificar el acceso que se vaya a conceder. Para obtener más información, consulte Utilizar políticas de punto de enlace de la VPC para API privadas en API Gateway.

Implementar una API privada mediante la consola de API Gateway

Para implementar la API privada, haga lo siguiente en la consola de API Gateway:

  1. Elija la API.

  2. Elija Deploy API (Implementar API).

  3. En Etapa, seleccione Nueva etapa.

  4. En Nombre de etapa, ingrese un nombre de etapa.

  5. (Opcional) En Description (Descripción), introduzca una descripción.

  6. Seleccione Implementar.

Asociar o desasociar un punto de enlace de la VPC a una API de REST privada

Cuando asocia un punto de enlace de la VPC con su API privada, API Gateway genera un nuevo registro DNS de Route 53 ALIAS. Puede usar este registro para invocar sus API privadas del mismo modo que sus API regionales u optimizadas para límites 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}

Para asociar un punto de enlace de la VPC a una API REST privada o desasociarlo de esta, debe actualizar la configuración de la API. Puede realizar este cambio mediante la consola de API Gateway, la AWS CLI o un AWS SDK para API Gateway. La operación de actualización puede tardar 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. Puede intentar crear una nueva implementación para la API si, después de varios minutos, las nuevas URL siguen sin resolverse en DNS.

Utilice la consola de API Gateway para asociar un punto de conexión de VPC con una API de REST privada

Para asociar un punto de conexión de VPC a una API privada
  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. Elija la API privada.

  3. En el panel de navegación principal, elija Política de recursos.

  4. Edite su política de recursos para permitir las llamadas desde su punto de conexión de VPC adicional.

  5. En el panel de navegación principal, elija Configuración de la API.

  6. En la sección Detalles de la API, elija Editar.

  7. En ID de punto de conexión de VPC, seleccione ID de punto de conexión de VPC adicionales.

  8. Seleccione Guardar.

  9. Vuelva a implementar la API para que los cambios se apliquen.

Use la AWS CLI para asociar un punto final de VPC a una API REST privada

Para asociar puntos de enlace de la VPC en el momento de crear la API, utilice el siguiente comando:

aws apigateway create-rest-api \ --name Petstore \ --endpoint-configuration '{ "types": ["PRIVATE"], "vpcEndpointIds" : ["vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee"] }' \ --region us-west-2

El resultado será similar al siguiente:

{ "apiKeySource": "HEADER", "endpointConfiguration": { "types": [ "PRIVATE" ], "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee" ] }, "id": "u67n3ov968", "createdDate": 1565718256, "name": "Petstore" }

Para asociar puntos de enlace de la VPC a una API privada ya creada, utilice el siguiente comando de la CLI:

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='add',path='/endpointConfiguration/vpcEndpointIds',value='vpce-01d622316a7df47f9'" \ --region us-west-2

El resultado será similar al siguiente:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }

Utilice la consola de API Gateway para desasociar un punto de conexión de VPC con una API de REST privada

Para desasociar un punto de conexión de VPC de una API de REST privada
  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. Elija la API privada.

  3. En el panel de navegación principal, elija Política de recursos.

  4. Edite su política de recursos para eliminar las menciones del punto de conexión de VPC que quiere desasociar de su API privada.

  5. En el panel de navegación principal, elija Configuración de la API.

  6. En la sección Detalles de la API, elija Editar.

  7. Para los ID de punto de conexión de VPC, elija la X para desasociar el punto de conexión de VPC.

  8. Seleccione Guardar.

  9. Vuelva a implementar la API para que los cambios se apliquen.

Use la CLI de AWS para desasociar un punto de conexión de VPC de una API de REST privada

Para desasociar un punto de enlace de la VPC de una API privada, utilice el siguiente comando de la CLI:

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='remove',path='/endpointConfiguration/vpcEndpointIds',value='vpce-0393a628149c867ee'" \ --region us-west-2

El resultado será similar al siguiente:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }