API Gateway: Creación e implementación

API Gateway permite la implementación y creación de APIs para nuestros recursos en AWS. A continuación pongo el código que permitiría crear e implementar APIs, comenzando con los módulos del SDK necesarios, luego el conjunto de comandos y al final la estructura básica de sus parámetros.

const { APIGatewayClient,
        CreateResourceCommand,
        CreateRestApiCommand,
        GetResoucesCommand,
        PutIntegrationCommand,
        PutMethodCommand } = require('@aws-sdk/client-api-gateway');

const paramsClient = { ... };
const clientAPI = new APIGatewayClient(paramsClient);

const apiName = 'myAPIName';

Realmente aquí comienzan los comandos utilizados para crear las API e implementarlas mediante SDK y API Gateway.

const paramsAPI = { ... };
const cmdAPI = new CreateRestApiCommand(paramsAPI);
const dataAPI = clientAPI.send(cmdAPI);

const paramsResouce = { ... };
const cmdResource = new GetResourcesCommand(paramsResource);
const responseResource = await clientAPI.send(cmdResource);
const rootResource = responseResource.items.find(r => r.path === '/');
const path = rootResource.id;

const paramsCreateRes = { ... };
const cmdCreateRes = new CreateResouceSommand(paramsCreateRes);
const responseCreateRes = await clientAPI.send(cmdCreateRes);
const dataResCreateResource = responseCreateRes.id;

const paramsCreateResMethod = { ... };
const cmdCreateResMethod = new PutMethodCommand(paramsCreateResMethod);
const dataCreateResMethod = clientAPI.send(cmdCreateRedMethod);

const paramsMethodInteg = { ... };
const cmdIntegration = new PutIntegrationCommand(paramsMethodInteg);
const dataIntegration = clientAPI.send(cmdIntegration);

Estas son las estructuras básicas de los parámetros para cada comando.

const paramsClient = {
  region: process.env.AWS_REGION // string con el nombre de la región.
};

const paramsAPI = {
  name: apiName // string con el nombre de la API.
};

const paramsResouce = {
  restAPiId: dataAPI.id // id obtenido de los datos de la API luego de crearla.
};

const paramsCreateRes = {
  parentId: parentResourceId, // id obtenido luego de buscar el recurso raíz.
  pathPart: resporcePath, // string con la ruta para el recurso.
  restApiId: api.id // id de la api obtenido al crearla.
};

const paramsCreateResMethod = {
  authorizationType: authType, // string con el tipo de autorización, p. e., 'NONE'.
  httpMethod: method, // string con un verbo, p. e., 'GET' o 'ANY'.
  resourceId: resourceId, // id obtenido para el recurso luego de ser creado.
  restApiId: api.id // id de la api obtenido al crearla.
};

const paramsMethodInteg = {
  httpMethod: method, // string con un verbo, p. e., 'GET' o 'ANY'.
  resourceId: resourceId, // id obtenido para el recurso luego de ser creado.
  restApiId: api.id, // id de la api obtenido al crearla.
  integrationHttpMethod: method, // string con un verbo, p. e., 'GET' o 'ANY'.
  type: type, // string con el tipo, p. e.: 'HTTP_PROXY'.
  uri: uri_string,
  requestParameters: {
  [ `integration.request.path${path}` ]: `method.request.path${path}` // path es un string.
  }
};

Comentarios

Entradas populares