API Gateway: configuración y prueba

API Gateway

Autorización de IAM para AWS Lambda/Rest API detrás de la configuración y prueba de API Gateway

Hay varias formas de configurar la autorización para la función lambda que proporciona API Gateway:

  1. Autorización de IAM: puede autorizarse a sí mismo o a su colega que tenga acceso a AWS.
  2. Autorización de la función Lambda: puede crear una función lambda adicional que valide las credenciales (como la clave API proporcionada por usted)
  3. Cognito: puede autorizar a los usuarios externos que están registrados en su aplicación mediante el servicio AWS Cognito.

Aquí solo veremos cómo podemos configurar la “autorización de IAM” para la función Lambda, que podría ser solo una función simple o una API REST completa detrás de la puerta de enlace API.

Así que empecemos…


Cree una función de Lambda de muestra. Supongo que es bastante fácil de crear. Estoy usando Nodejs aquí para la configuración.

Cree una API REST de muestra en la puerta de enlace API:

Cree un método ‘cualquiera’ y asigne la función lambda que acabamos de crear (la había llamado prueba).

Paso 4: En el menú desplegable Acción, elija “Implementar”. Proporcione un nombre artístico (por ejemplo, dev) y presione “Implementar”

Ahora probemos si funciona como se esperaba (simplemente vaya al escenario y copie la URL en el navegador): ¡Sí lo hace!

API Gateway

Ahora asegurémoslo con el autorizador de IAM

Primero debemos crear un usuario que tendrá acceso solo para invocar esta API.

1. Crear un usuario:

API Gateway

2. Adjunte una política existente: AmazonAPIGatewayInvokeFullAccess

API Gateway

Guarde su “Id. de clave de acceso” y “Clave de acceso secreta”, ya que las necesitará para invocar la API.

Ahora regresemos a API Gateway y vayamos a Recursos -> CUALQUIERA -> “Ejecución de método” y configure “Autorización” como “AWS IAM”.

API Gateway

No olvide implementar cómo lo hizo anteriormente en la misma etapa.

¡Todo listo!

Ahora tenemos que probarlo.

1. Postman

Sin pasar las credenciales, debería ver el error:

API Gateway

Ahora configuremos las credenciales de IAM: clave de acceso y clave secreta.

En Postman, elija “AWS signatura” como tipo de autorización:

API Gateway

Y pega tus credenciales y también la región correcta:

API Gateway

Presiona el botón Send:

API Gateway

Ahora veamos si podemos invocar este AIP programáticamente. Aquí estoy usando Nodejs:

Deberá instalar la biblioteca desde el administrador de paquetes NPM, es decir, “aws-api-gateway-client” para que este código funcione.

var apigClientFactory = require("aws-api-gateway-client").default;
var apigClient = apigClientFactory.newClient({
  invokeUrl: "https://u9nzanwqc2.execute-api.us-east-2.amazonaws.com/dev",
  region: "us-east-2",
  accessKey: "AKIAZ***********UGK",
  secretKey: "PI1***************************b3SVT",
});
const params = {};
const queryParams = {};
const body = {};
apigClient
  .invokeApi(
    params,
    "/",
    "get",
    {
      queryParams: queryParams,
    },
    body
  )
  .then(function (result) {
    console.log(result.data);
  })
  .catch(function (result) {
    console.log(result);
  });

Debería ver el resultado en la consola: { statusCode: 200, body: ‘”¡Hola de Lambda!”‘ }


Espero que esto funcione para ti también.

¡Feliz aprendizaje! ¡Feliz codificación!


Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Laravel:

Recent Post