Tutorial: creación de una API REST de API Gateway con integración de AWS - Amazon API Gateway

Tutorial: creación de una API REST de API Gateway con integración de AWS

Tanto los temas Tutorial: Desarrollo de una API de REST Hello World con integración de proxy de Lambda como Elección de un tutorial de integración de AWS Lambda describen cómo se debe crear una API de API Gateway para exponer la función de Lambda integrada. Además, puede crear una API de API Gateway para exponer otros servicios de AWS, como Amazon SNS, Amazon S3, Amazon Kinesis e incluso AWS Lambda. Esto es posible mediante la integración de AWS. La integración de Lambda o la integración de proxy de Lambda es un caso especial, donde la invocación de la función de Lambda se expone a través de la API de API Gateway.

Todos los servicios de AWS admiten API dedicadas para exponer sus características. Sin embargo, los protocolos de la aplicación o las interfaces de programación probablemente difieren entre un servicio y otro. Una API de API Gateway con la integración de AWS tiene la ventaja de proporcionar un protocolo de aplicación coherente para que su cliente tenga acceso a diferentes servicios de AWS.

En este tutorial, vamos a crear una API para exponer Amazon SNS. Para ver más ejemplos de integración de una API con otros servicios de AWS, consulte Tutoriales y talleres sobre Amazon API Gateway.

A diferencia de la integración de proxy de Lambda, no existe una integración de proxy correspondiente para otros servicios de AWS. Por lo tanto, un método de API se integra con una única acción de AWS. Para mayor flexibilidad, similar a la de la integración de proxy, puede configurar una integración de proxy de Lambda. Entonces, la función de Lambda analiza y procesa solicitudes para otras acciones de AWS.

API Gateway no vuelve a intentar las operaciones cuando se agota el tiempo de espera del punto de enlace. El intermediario de la API debe implementar una lógica de reintentos para administrar los tiempos de espera del punto de enlace.

Este tutorial se basa en las instrucciones y conceptos en Elección de un tutorial de integración de AWS Lambda. Si aún no ha completado ese tutorial, le sugerimos que lo haga primero.

Requisitos previos

Antes de empezar este tutorial, haga lo siguiente:

  1. Realice los pasos que se indican en Requisitos previos para comenzar con API Gateway.

  2. Cree una nueva API llamada MyDemoAPI. Para obtener más información, consulte Tutorial: Desarrollo de una API de REST con integración HTTP no de proxy.

  3. Implemente la API al menos una vez en una etapa denominada test. Para obtener más información, consulte Implementar la API en Elección de un tutorial de integración de AWS Lambda.

  4. Realice el resto de los pasos de Elección de un tutorial de integración de AWS Lambda.

  5. Cree al menos un tema en Amazon Simple Notification Service (Amazon SNS). Utilizará la API implementada para obtener una lista de temas de Amazon SNS asociados a su cuenta de AWS. Para obtener información sobre cómo crear un tema en Amazon SNS, consulte Creación de un tema. (No es necesario que copie el ARN del tema mencionado en el paso 5).

Paso 1: Crear el rol de ejecución del proxy de servicio de AWS

Para permitir que la API invoque acciones de Amazon SNS, debe tener las políticas de IAM adecuadas asociadas a un rol de IAM.

Para crear el rol de ejecución del proxy de servicio de AWS
  1. Inicie sesión en la AWS Management Console y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Roles.

  3. Elija Crear rol.

  4. Elija Servicio de AWS en Seleccionar el tipo de entidad de confianza y, a continuación, elija API Gateway y seleccione Permite que API Gateway envíe registros a CloudWatch Logs.

  5. Seleccione Siguiente y de nuevo Siguiente.

  6. En Role name (Nombre de rol), escriba APIGatewaySNSProxyPolicy y luego elija Create role (Crear rol).

  7. En la lista Roles (Roles), elija el rol que acaba de crear. Puede que tenga que desplazarse o usar la barra de búsqueda para encontrar el rol.

  8. Para el rol seleccionado, seleccione la pestaña Agregar permisos.

  9. Elija Adjuntar políticas en la lista desplegable.

  10. En la barra de búsqueda, escriba AmazonSNSReadOnlyAccess y, a continuación, elija Añadir permisos.

    nota

    Para simplificar el proceso, este tutorial utiliza una política administrada. Como práctica recomendada, se deben crear políticas de IAM propias para otorgar los permisos mínimos requeridos.

  11. Anote el ARN del rol recién creado, ya que lo usará más adelante.

Paso 2: Crear el recurso

En este paso, creará un recurso que permitirá al proxy de servicio de AWS interactuar con el servicio de AWS.

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

  2. Elija la API.

  3. Seleccione el recurso raíz, /, representado por una única barra oblicua (/), y después elija Crear recurso.

  4. Mantenga Recurso proxy desactivado.

  5. Mantenga Ruta del recurso en /.

  6. En Nombre del recurso, escriba mydemoawsproxy.

  7. Mantenga desactivado CORS (uso compartido de recursos entre orígenes).

  8. Elija Crear recurso.

Paso 3: Crear el método GET

En este paso, creará un método GET que permitirá al proxy de servicio de AWS interactuar con el servicio de AWS.

Para crear el método GET
  1. Seleccione el recurso /mydemoawsproxy y, a continuación, elija Crear método.

  2. En el tipo de método, seleccione GET.

  3. En Tipo de integración, seleccione Servicio de AWS.

  4. En Región de AWS, seleccione la Región de AWS en la que ha creado el tema de Amazon SNS.

  5. En Servicio de AWS, seleccione Amazon SNS.

  6. Deje Subdominio de AWS en blanco.

  7. En Método HTTP, seleccione GET.

  8. En Tipo de acción, elija Usar nombre de acción.

  9. En Nombre de la función, introduzca ListTopics.

  10. En Rol de ejecución, escriba el ARN del rol para APIGatewaySNSProxyPolicy.

  11. Elija Crear método.

Paso 4: Especificar la configuración del método y probar el método

Ahora puede probar el método GET para verificar que se ha configurado correctamente para enumerar los temas de Amazon SNS.

Para probar el método GET
  1. Elija la pestaña Prueba. Puede que tenga que elegir el botón de flecha hacia la derecha para mostrar la pestaña.

  2. Seleccione Probar.

    El resultado muestra una respuesta similar a la siguiente:

    { "ListTopicsResponse": { "ListTopicsResult": { "NextToken": null, "Topics": [ { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1" }, { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2" }, ... { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N" } ] }, "ResponseMetadata": { "RequestId": "abc1de23-45fa-6789-b0c1-d2e345fa6b78" } } }

Paso 5: Implementar la API

En este paso, implementará la API para que pueda llamarla desde fuera de la consola de API Gateway.

Para implementar la API
  1. Elija Deploy API (Implementar API).

  2. En Etapa, seleccione Nueva etapa.

  3. En Stage name (Nombre de etapa), escriba test.

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

  5. Elija Deploy (Implementar).

Paso 6: Probar la API

En este paso, salga de la consola de API Gateway y utilice el proxy de servicio de AWS para interactuar con el se rvicio de Amazon SNS.

  1. En el panel de navegación principal, elija Etapa.

  2. En Detalles de la etapa, elija el icono de copia para copiar la URL de invocación de la API.

    Debería tener un aspecto similar al siguiente:

    https://my-api-id.execute-api.region-id.amazonaws.com/test
  3. Introduzca la URL en el cuadro de direcciones de una nueva pestaña del navegador.

  4. Añada /mydemoawsproxy para que la URL tenga el siguiente aspecto:

    https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoawsproxy

    Desplácese hasta la dirección URL. Se debe mostrar información similar a la siguiente:

    {"ListTopicsResponse":{"ListTopicsResult":{"NextToken": null,"Topics":[{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"},{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"},...{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N}]},"ResponseMetadata":{"RequestId":"abc1de23-45fa-6789-b0c1-d2e345fa6b78}}}

Paso 7: Limpieza

Puede eliminar los recursos de IAM que el proxy de servicio de AWS necesita para funcionar.

aviso

Si elimina un recurso de IAM que utiliza un proxy de servicio de AWS, ese proxy de servicio de AWS y todas las API que lo utilicen dejarán de funcionar. La eliminación de un recurso de IAM no se puede deshacer. Si desea utilizar el recurso de IAM de nuevo, debe volver a crearlo.

Para eliminar los recursos de IAM asociados
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el área Details (Detalles), elija Roles (Funciones).

  3. Seleccione APIGatewayAWSProxyExecRole y, a continuación, elija Role Actions (Acciones de rol), Delete Role (Eliminar rol). Cuando se le pregunte, elija Yes, Delete.

  4. En el área Details (Detalles), elija Policies (Políticas).

  5. Seleccione APIGatewayAWSProxyExecPolicy y, a continuación, elija Policy Actions (Acciones de la política) y luego Delete (Eliminar). Cuando se le pregunte, elija Delete (Eliminar).

Ha llegado al final de este tutorial. Para obtener más detalles sobre la creación de una API con un proxy de servicio de AWS, consulte Tutorial: Crear una API de REST como proxy de Amazon S3 en API Gateway, Tutorial: Creación de una API de REST de calculadora con dos integraciones de servicios de AWS y una integración de Lambda sin proxy o Tutorial: Creación de una API de REST como proxy de Amazon Kinesis en API Gateway.