

# Tutorial: Creación de una API de REST con una integración de AWS
<a name="getting-started-aws-proxy"></a>

 Tanto los temas [Tutorial: Creación de una API de REST con una integración de proxy de Lambda](api-gateway-create-api-as-simple-proxy-for-lambda.md) como [Tutorial: Creación de una API de REST con una integración no de proxy de Lambda](getting-started-lambda-non-proxy-integration.md) 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](api-gateway-tutorials.md). 

 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 conexión. El intermediario de la API debe implementar una lógica de reintentos para administrar los tiempos de espera del punto de conexión. 

 Este tutorial se basa en las instrucciones y conceptos en [Tutorial: Creación de una API de REST con una integración no de proxy de Lambda](getting-started-lambda-non-proxy-integration.md). Si aún no ha completado ese tutorial, le sugerimos que lo haga primero. 



**Topics**
+ [Requisitos previos](#getting-started-aws-proxy-prerequisites)
+ [Paso 1: Crear el rol de ejecución del proxy de servicio de AWS](#getting-started-aws-proxy-add-roles)
+ [Paso 2: Crear el recurso](#getting-started-aws-proxy-add-resources)
+ [Paso 3: Crear el método GET](#getting-started-aws-proxy-add-methods)
+ [Paso 4: Especificar la configuración del método y probar el método](#getting-started-aws-proxy-set-methods)
+ [Paso 5: Implementar la API](#getting-started-aws-proxy-deploy)
+ [Paso 6: Probar la API](#getting-started-aws-proxy-test)
+ [Paso 7: Limpieza](#getting-started-aws-proxy-clean-up)

## Requisitos previos
<a name="getting-started-aws-proxy-prerequisites"></a>

Antes de empezar este tutorial, haga lo siguiente:

1. Realice los pasos que se indican en [Configuración para usar API Gateway](setting-up.md).

1.  Cree una nueva API llamada `MyDemoAPI`. Para obtener más información, consulte [Tutorial: Creación de una API de REST con integración no de proxy HTTP](api-gateway-create-api-step-by-step.md). 

1. Implemente la API al menos una vez en una etapa denominada `test`. Para obtener más información, consulte [Implementar la API](getting-started-lambda-non-proxy-integration.md#getting-started-deploy-api) en [Elección de un tutorial de integración de AWS Lambda](getting-started-with-lambda-integration.md).

1. Realice el resto de los pasos de [Elección de un tutorial de integración de AWS Lambda](getting-started-with-lambda-integration.md).

1. 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](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html). (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
<a name="getting-started-aws-proxy-add-roles"></a>

 Para permitir que la API invoque acciones de Amazon SNS, debe tener las políticas de IAM adecuadas asociadas a un rol de IAM. En este paso, deberá crear un nuevo rol de IAM.

**Para crear el rol de ejecución del proxy de servicio de AWS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Elija **Roles**.

1. Elija **Creación de rol**.

1.  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**.

1.  Seleccione **Siguiente** y de nuevo **Siguiente**.

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

1. 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.

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

1. Elija **Adjuntar políticas** en la lista desplegable.

1. 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. 

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

## Paso 2: Crear el recurso
<a name="getting-started-aws-proxy-add-resources"></a>

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](https://console.aws.amazon.com/apigateway).

1. Elija la API.

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

1. Mantenga **Recurso proxy** desactivado.

1. Mantenga **Ruta del recurso** en `/`.

1. En **Nombre del recurso**, escriba **mydemoawsproxy**.

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

1. Elija **Crear recurso**.

## Paso 3: Crear el método GET
<a name="getting-started-aws-proxy-add-methods"></a>

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**.

1. En el tipo de método, seleccione **GET**.

1. En **Tipo de integración**, seleccione **Servicio de AWS**.

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

1. En **Servicio de AWS**, seleccione **Amazon SNS**.

1. Deje **Subdominio de AWS** en blanco.

1. En **Método HTTP**, seleccione **GET**.

1. En **Tipo de acción**, elija **Usar nombre de acción**.

1. En **Nombre de la función**, introduzca **ListTopics**.

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

1. Elija **Crear método**.

## Paso 4: Especificar la configuración del método y probar el método
<a name="getting-started-aws-proxy-set-methods"></a>

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.

1. 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
<a name="getting-started-aws-proxy-deploy"></a>

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

**Para implementar la API**

1. Elija **Implementar API**.

1. En **Etapa**, seleccione **Nueva etapa**.

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

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

1. Elija **Deploy (Implementar)**.

## Paso 6: Probar la API
<a name="getting-started-aws-proxy-test"></a>

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**.

1. 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
   ```

1. Introduzca la URL en el cuadro de direcciones de una nueva pestaña del navegador.

1. 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
<a name="getting-started-aws-proxy-clean-up"></a>

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/](https://console.aws.amazon.com/iam/).

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

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

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

1. 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: Creación de una API de REST como proxy de Amazon S3](integrating-api-with-aws-services-s3.md), [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](integrating-api-with-aws-services-lambda.md) o [Tutorial: Creación de una API de REST como proxy de Amazon Kinesis](integrating-api-with-aws-services-kinesis.md). 