Tutorial: Creación de una API de REST con una integración de proxy de Lambda
La integración de proxy de Lambda es un tipo de integración de API de API Gateway ligera y flexible que le permite integrar un método de API, o la totalidad de la API, con una función de Lambda. La función de Lambda se puede escribir en cualquier lenguaje que admitida Lambda. Debido a que se trata de una integración de proxy, puede cambiar la implementación de la función de Lambda en cualquier momento sin tener que volver a implementar la API.
En este tutorial, aprenderá a hacer lo siguiente:
-
Creación de una función Hello, World! Función de Lambda para que sea el backend de la API.
-
Creación y prueba de una función "Hello, World!" API con integración de proxy de Lambda.
Temas
Creación de una función Hello, World! Función de Lambda
Para crear un "Hello, World!" Función de Lambda en la consola de Lambda
Inicie sesión en la consola de Lambda en https://console.aws.amazon.com/lambda/
. -
En la barra de navegación de AWS, elija una Región de AWS.
nota
Anote la región en la que ha creado la función de Lambda. La necesitará al crear la API.
-
Elija Functions (Funciones) en el panel de navegación.
-
Elija Create function (Crear función).
-
Elija Author from scratch (Crear desde cero).
-
Bajo Basic information (Información básica), haga lo siguiente:
-
Bajo Function name (Nombre de función), escriba
GetStartedLambdaProxyIntegration
. -
En Tiempo de ejecución, elija el último tiempo de ejecución de Node.js o Python compatible.
Para Arquitectura, mantenga la configuración predeterminada.
-
En Permissions (Permisos), expanda Change default execution role(Cambiar rol de ejecución predeterminado). En Rol de ejecución, elija Crear un nuevo rol desde las plantillas de políticas de AWS.
-
En Role name (Nombre del rol), escriba
GetStartedLambdaBasicExecutionRole
. -
Deje el campo Policy templates (Plantillas de política) en blanco.
-
Elija Create function (Crear función).
-
-
En Function code (Código de la función), en el editor de código integrado, copie/pegue el código siguiente:
-
Elija Deploy (Implementar).
Creación de una función Hello, World! API
Ahora cree una API para la función de Lamba "Hello, World!" La función de Lambda utilizando la consola de API Gateway.
Para crear un "Hello, World!" API
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. -
Si es la primera vez que utiliza API Gateway, verá una página en la que aparecen las características del servicio. En REST API, elija Build (Compilación). Cuando aparezca el menú emergente Create Example API (Crear API de ejemplo), elija OK (Aceptar).
Si esta no es la primera vez que utiliza API Gateway, elija Create API (Crear API). En REST API, elija Build (Compilación).
En API name (Nombre de la API), escriba
LambdaProxyAPI
.(Opcional) En Description (Descripción), introduzca una descripción.
Mantenga Tipo de punto de conexión de la API establecido en Regional.
Seleccione Crear API.
Después de crear una API, se crea un recurso. Normalmente, los recursos de la API están organizados en un árbol de recursos de acuerdo con la lógica de la aplicación. Para este ejemplo, creará un recurso /helloworld.
Para crear un recurso
Elija Crear recurso.
Mantenga Recurso proxy desactivado.
Mantenga Ruta del recurso en
/
.En Nombre del recurso, escriba
helloworld
.Mantenga desactivado CORS (uso compartido de recursos entre orígenes).
Elija Crear recurso.
En una integración de proxy, toda la solicitud se envía a la función de Lambda del backend tal y como está, a través de un método catch-all ANY
que representa cualquier método HTTP. El método HTTP real lo especifica el cliente en tiempo de ejecución. El método ANY
le permite usar una sola configuración de métodos de API para todos los métodos HTTP admitidos: DELETE
, GET
, HEAD
, OPTIONS
, PATCH
, POST
y PUT
.
Para crear un método ANY
Seleccione el recurso /helloworld y, a continuación, elija Crear método.
En Tipo de método, seleccione CUALQUIERA.
En Tipo de integración, seleccione Función de Lambda.
Active Integración de proxy de Lambda.
En Función de Lambda, seleccione la Región de AWS en la que creó la función de Lambda y, a continuación, introduzca el nombre de la función.
-
Si desea utilizar el valor predeterminado del tiempo de espera, que es de 29 segundos, mantenga activado el Tiempo de espera predeterminado. Para establecer un tiempo de espera personalizado, elija Tiempo de espera predeterminado e ingrese un valor de tiempo de espera comprendido entre
50
y29000
milisegundos. Elija Crear método.
Implementación y pruebas de API
Para implementar su 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 Implementar.
En Detalles de la etapa, elija el icono de copia para copiar la URL de invocación de la API.
Uso del navegador y cURL para probar una API con integración de proxy de Lambda
Puede utilizar un navegador o cURL
Para probar solicitudes GET
mediante solo los parámetros de cadena de consulta, puede ingresar la URL para el recurso helloworld
de la API en la barra de direcciones del navegador.
Para crear la URL del recurso helloworld
de la API, agregue el recurso helloworld
y el parámetro de cadena de consulta ?greeter=John
a la URL de invocación. La URL debería tener el siguiente aspecto.
https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld?greeter=John
Para otros métodos, debe utilizar utilidades de prueba de la API de REST más avanzadas, tales como POSTMAN
Para probar la API implementada mediante cURL:
-
Abra una ventana de terminal.
-
Copie el siguiente comando cURL y péguelo en la ventana de terminal. Sustituya la URL de invocación por la que copió en el paso anterior y añada
/helloworld
al final de la URL.nota
Si está ejecutando el comando en Windows, utilice esta sintaxis:
curl -v -X POST "https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld" -H "content-type: application/json" -d "{ \"greeter\": \"John\" }"Para llamar a la API con el parámetro de cadena de consulta de
?greeter=John
:curl -X GET 'https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld?greeter=John'Para llamar a la API con el parámetro de encabezado de
greeter:John
:curl -X GET https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'Para llamar a la API con un cuerpo de
{"greeter":"John"}
:curl -X POST https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -d '{ "greeter": "John" }'
En todos estos casos, la salida es una respuesta 200 con el siguiente cuerpo de respuesta:
Hello, John!