Tutorial: Creación de una API de REST privada
En este tutorial, creará una API REST privada. Los clientes solo pueden acceder a la API desde su Amazon VPC La API está aislada de la Internet pública, que es un requisito de seguridad común.
Este tutorial tarda aproximadamente 30 minutos en completarse. En primer lugar, utilice una plantilla de AWS CloudFormation para crear una nube de Amazon VPC, un punto de enlace de la VPC, una función de AWS Lambda y lanzar una instancia de Amazon EC2 que utilizará para probar la API. A continuación, utilice la AWS Management Console para crear una API privada y adjuntar una política de recursos que permita el acceso solo desde el punto de enlace de la VPC. Por último, se prueba la API.
Para completar este tutorial, necesita una cuenta de AWS y un usuario de AWS Identity and Access Management con acceso a la consola. Para obtener más información, consulte Configuración para usar API Gateway.
En este tutorial, se utiliza la AWS Management Console. Para obtener una plantilla de AWS CloudFormation que cree esta API y todos los recursos relacionados, consulte template.yaml.
Temas
- Paso 1: crear dependencias
- Paso 2: crear una API privada
- Paso 3: crear un método e integración
- Paso 4: adjuntar una política de recursos
- Paso 5: implemente su API
- Paso 6: compruebe que su API no sea accesible públicamente
- Paso 7: conéctese a una instancia de su VPC e invoque su API
- Paso 8: Eliminar
- Próximos pasos: automatice con AWS CloudFormation
Paso 1: crear dependencias
Descargue y descomprima esta plantilla de AWS CloudFormation. Utilice la plantilla para crear todas las dependencias de su API privada, incluidas una VPC de Amazon, un punto de enlace de la VPC y una función Lambda que sirve como backend de la API. Creará la API privada más tarde.
Para crear una pila de AWS CloudFormation
Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation
. -
Seleccione Create stack (Crear pila) y, a continuación, seleccione With new resources (standard) (Con nuevos recursos [estándar]).
-
En Specify template (Especificar plantilla), elija Upload a template file (Cargar un archivo de plantilla).
-
Seleccione la plantilla que ha descargado.
-
Elija Next (Siguiente).
-
En Stack name (Nombre de pila), escriba
private-api-tutorial
y, a continuación, elija Next (Siguiente). -
En Configure stack options (Configurar opciones de pila), elija Next (Siguiente).
-
Para Capabilities (Capacidades), sepa que AWS CloudFormation puede crear recursos de IAM en su cuenta.
-
Seleccione Enviar.
AWS CloudFormation aprovisiona las dependencias para su API. Puede tardar unos minutos. Cuando el estado de la pila de AWS CloudFormation sea CREATE_COMPLETE, elija Outputs (Salidas). Anote el ID del punto de enlace de la VPC. Los va a necesitar en pasos más adelante de este tutorial.
Paso 2: crear una API privada
Cree una API privada para permitir que solo los clientes de su VPC accedan a ella.
Creación de una API privada
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. -
Seleccione Create API (Crear API)y, a continuación, para API REST, seleccione Build (Construir).
-
En API name (Nombre de la API), escriba
private-api-tutorial
. -
En Tipo de punto de conexión de la API, seleccione Privado.
-
Para ID del punto de conexión de la VPC, introduzca el ID de punto de conexión de la VPC en las Salidas de la pila de AWS CloudFormation.
-
Seleccione Crear API.
Paso 3: crear un método e integración
Usted crea un método y la integración de Lambda GET
para manejar solicitudes de GET
a su API. Cuando un cliente invoca su API, API Gateway envía la solicitud a la función Lambda que creó en el paso 1 y, a continuación, devuelve una respuesta al cliente.
Para crear un método e integración
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. -
Elija la API.
-
Elija Crear método.
-
En Tipo de método, seleccione
GET
. -
En Tipo de integración, seleccione Función de Lambda.
-
Active Integración de proxy de Lambda. Con una integración de proxy de Lambda, API Gateway envía un evento a Lambda con una estructura definida y transforma la respuesta de su función Lambda a una respuesta HTTP.
-
En la Lambda function (Función de Lambda), elija la función que creó con la plantilla de AWS CloudFormation en el paso 1. El nombre de la función comienza con
private-api-tutorial
. -
Elija Crear método.
Paso 4: adjuntar una política de recursos
Adjuntar una política de recursos a la API que permite a los clientes invocar la API sólo a través del punto de enlace de la VPC. Para restringir aún más el acceso a la API, también puede configurar una política de punto de enlace de la VPC para el punto de enlace de su VPC, pero esto no es necesario para este tutorial.
Para adjuntar una política de recursos
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. -
Elija la API.
-
Elija Política de recursos y, a continuación, elija Crear política.
-
Escriba la siguiente política. Reemplace
vpceID
por su ID de punto de enlace de la VPC desde las Outputs (Salidas) de su pila de AWS CloudFormation.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "
vpceID
" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*" } ] } -
Elija Guardar cambios.
Paso 5: implemente su API
A continuación, implemente su API para ponerla a disposición de los clientes de su Amazon VPC
Para implementar una API
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. -
Elija la API.
Elija Deploy API (Implementar API).
En Etapa, seleccione Nueva etapa.
En Stage name (Nombre de etapa), escriba
test
.(Opcional) En Description (Descripción), introduzca una descripción.
Elija Deploy (Implementar).
Ya está listo para probar su API.
Paso 6: compruebe que su API no sea accesible públicamente
Use curl
para verificar que no puede invocar la API desde fuera de su Amazon VPC
Para probar la API
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. -
Elija la API.
-
En el panel de navegación principal, elija Etapas y, a continuación, elija la etapa test.
-
En Detalles de la etapa, elija el icono de copia para copiar la URL de invocación de la API. La URL se ve así
https://
. El punto de enlace de la VPC que creó en el paso 1 tiene el DNS privado habilitado, por lo que puede utilizar la URL proporcionada para invocar la API.abcdef123
.execute-api.us-west-2
.amazonaws.com/test -
Utilice curl para intentar invocar la API desde fuera de su VPC.
curl https://
abcdef123
.execute-api.us-west-2
.amazonaws.com/testCurl indica que el punto de enlace de su API no se puede resolver. Si obtiene una respuesta diferente, vuelva al paso 2 y asegúrese de elegir Private (Privado) para el tipo de punto de enlace de su API.
curl: (6) Could not resolve host:
abcdef123
.execute-api.us-west-2
.amazonaws.com/test
A continuación, se conecta a una instancia de Amazon EC2 en la VPC para invocar su API.
Paso 7: conéctese a una instancia de su VPC e invoque su API
A continuación, pruebe la API desde su Amazon VPC Para acceder a su API privada, se conecta a una instancia de Amazon EC2 en su VPC y, a continuación, utilice curl para invocar su API. Utilice el Administrador de sesiones de Systems Manager para conectarse a la instancia en el navegador.
Para probar la API
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
Elija Instances.
-
Elija la instancia denominada private-api-tutorial que creó con la plantilla de AWS CloudFormation en el paso 1.
-
Elija Connect (Conectar) y, a continuación, elija Session Manager (Administrador de sesiones).
-
Elija Connect (Conectar) para iniciar una sesión basada en explorador en la instancia.
-
En su sesión de Session Manager, use curl para invocar su API. Puede invocar la API porque está utilizando una instancia en su Amazon VPC
curl https://
abcdef123
.execute-api.us-west-2
.amazonaws.com/testVerifique que obtiene la respuesta
Hello from Lambda!
.
Ha creado correctamente una API a la que solo se puede acceder desde su VPC de Amazon y, a continuación, verificó que funciona.
Paso 8: Eliminar
Para evitar costos innecesarios, elimine los recursos creados como parte de este tutorial Los siguientes pasos eliminan su API REST y su pila de AWS CloudFormation.
Para eliminar una API REST
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. -
En la página API, seleccione una API. Elija Acciones de API, elija Eliminar API y confirme su elección.
Para eliminar una pila de AWS CloudFormation
Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation
. -
Seleccione su pila de AWS CloudFormation.
-
Elija Delete (Eliminar) y, a continuación, confirme su elección.
Próximos pasos: automatice con AWS CloudFormation
Puede automatizar la creación y la limpieza de todos los recursos de AWS involucrados en este tutorial. Para obtener una plantilla de AWS CloudFormation de ejemplo completa, consulte template.yaml.