

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Crear una API de Step Functions utilizando API Gateway
<a name="tutorial-api-gateway"></a>

Puede utilizar Amazon API Gateway para asociarlo AWS Step Functions APIs con los métodos de una API de API Gateway. Cuando se envía una solicitud HTTPS a un método de la API, API Gateway invoca acciones de la API de Step Functions.

En este tutorial se muestra cómo crear una API que utilice un recurso y el método `POST` para comunicarse con la acción de la API `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)`. Utilizará la consola AWS Identity and Access Management (IAM) para crear un rol para API Gateway. A continuación, usará la consola de API Gateway para crear una API de API Gateway, crear un recurso y un método y asignar el método a la acción de la API `StartExecution`. Por último, implementará y probará su API.

**nota**  
Aunque Amazon API Gateway puede comenzar una ejecución de Step Functions llamando a `StartExecution`, usted debe llamar a `[DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)` para obtener el resultado.

## Paso 2: Crear un rol de IAM para API Gateway
<a name="api-gateway-step-1"></a>

Antes de crear su API de API Gateway, debe conceder a API Gateway permiso para llamar a las acciones de la API de Step Functions.<a name="api-gateway-procedure-create-iam-role"></a>

**Para configurar permisos de API Gateway**

1. Inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/home) y elija **Roles**, **Crear rol**.

1. En la página **Seleccionar entidad de confianza**, haga lo siguiente:

   1. Para **Tipo de entidad de confianza**, mantenga la selección predeterminada de **Servicio de AWS**.

   1. En la lista desplegable, elija **API Gateway** en la lista desplegable.

1. Seleccione **API Gateway** y, a continuación, elija **Siguiente**.

1. Elija **Siguiente** en la página **Agregar permisos**.

1. (Opcional) En la página **Asignar nombre, revisar y crear**, introduzca los detalles, como el nombre del rol. Por ejemplo, escriba **APIGatewayToStepFunctions**.

1. Elija **Crear rol**.

   El rol de IAM se muestra en la lista de roles.

1. Elija el nombre de su rol y anote el **ARN de rol**, como se muestra en el siguiente ejemplo.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```<a name="api-gateway-attach-policy-to-role"></a>

**Para asociar una política al rol de IAM**

1. En la página **Roles**, busque su rol (`APIGatewayToStepFunctions`) y, a continuación, selecciónelo.

1. En la pestaña **Permisos**, elija **Agregar permisos** y, a continuación, **Asociar políticas**.

1. En la página **Asociar política**, busque `AWSStepFunctionsFullAccess`, elija la política y después elija **Asociar política**.

## Paso 2: Crear una API de API Gateway
<a name="api-gateway-step-2"></a>

Después de crear el rol de IAM, puede crear la API de API Gateway personalizada.

**Para crear la API**

1. Abra la [consola de Amazon API Gateway](https://console.aws.amazon.com/apigateway/) y, a continuación, seleccione **Create API**.

1. En la página **Elija un tipo de API**, en el panel **API de REST**, seleccione **Crear**.

1. En la página **Crear una API de REST**, selecciona **Nueva API** y, a continuación, introduce el **nombre ***StartExecutionAPI*** de la API**.

1. Mantenga el **Tipo de punto de conexión de la API** como **Regional** y, a continuación, seleccione **Crear API**.<a name="api-gateway-create-resource"></a>

**Creación de un recurso**

1. En la página **Recursos** de***StartExecutionAPI***, selecciona **Crear recurso**.

1. En la página **Crear recurso**, escriba **execution** como **Nombre del recurso** y, a continuación, elija **Crear recurso**.<a name="api-gateway-create-method"></a>

**Para crear un método POST**

1. Seleccione el recurso **/execution** y, a continuación, elija **Crear método**.

1. En **Tipo de método**, elija `POST`.

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

1. En **Región de AWS**, elija una región de la lista.

1. En **Servicio de AWS**, elija **Step Functions** en la lista.

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

1. En **Método HTTP**, elija **POST** en la lista.
**nota**  
Todas las acciones de la API de Step Functions utilizan el método `POST` HTTP.

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

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

1. En **Rol de ejecución**, escriba [el ARN del rol de IAM creado anteriormente](#api-gateway-procedure-create-iam-role), como se muestra en el ejemplo siguiente.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```

1. Mantenga las opciones predeterminadas para **Caché de credenciales** y **Tiempo de espera predeterminado** y, a continuación, seleccione **Guardar**.

La asignación visual entre API Gateway y Step Functions se muestra en la página **/execution - POST - Ejecución de método**.

## Paso 3: Probar e implementar la API de API Gateway
<a name="api-gateway-step-3"></a>

Una vez que haya creado la API, pruébela e impleméntela. <a name="api-gateway-test-api"></a>

**Para probar la comunicación entre API Gateway y Step Functions**

1. En la página **/execution - POST - Ejecución de método**, elija **Probar**. Puede que tenga que elegir el botón de flecha hacia la derecha para mostrar la pestaña.

1. En la pestaña **/execution - POST - Prueba de método**, copie los siguientes parámetros de solicitud en la sección **Cuerpo de la solicitud** utilizando el ARN de una máquina de estado existente (o [cree una nueva máquina de estado que utilice una función de Lambda](tutorial-creating-lambda-state-machine.md)) y, a continuación, elija **Probar**.

   ```
   {
      "input": "{}",
      "name": "MyExecution",
      "stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"
   }
   ```

   Para obtener más información, consulte `StartExecution` [Sintaxis de solicitud](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html#API_StartExecution_RequestSyntax)en la *Referencia de la API de AWS Step Functions*.
**nota**  
Si no desea incluir el ARN de la máquina de estado en el cuerpo de la llamada a API Gateway, puede configurar una plantilla de asignación en la **Solicitud de integración**, como se muestra en el ejemplo siguiente.  

   ```
   {
       "input": "$util.escapeJavaScript($input.json('$'))",
       "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)"
   }
   ```
Con este enfoque, puede especificar máquinas ARNs de diferentes estados en función de su etapa de desarrollo (por ejemplo`dev`,`test`, y`prod`). Para obtener más información sobre la especificación de variables de etapa en una plantilla de asignación, consulte [https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference) en la *Guía para desarrolladores de API Gateway*.

1. La ejecución se inicia, y el ARN de ejecución y su fecha de inicio se muestran en **Cuerpo de la respuesta**.

   ```
   {
      "executionArn": "arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution",
      "startDate": 1486768956.878
   }
   ```
**nota**  
Puede ver la ejecución eligiendo su máquina de estado en la [consola de AWS Step Functions](https://console.aws.amazon.com/states/).

**Para implementar su API**

1. En la página de **recursos** de***StartExecutionAPI***, elija **Implementar API**.

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

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

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

1. Elija **Implementar**.

**Para probar la implementación**

1. En la página **Etapas** de***StartExecutionAPI***, expanda **alpha**,**/**, **/execution**, **POST** y, a continuación, elija el método **POST**.

1. En **Anulaciones de métodos**, elija el icono de copia para copiar la URL de invocación de la API. La URL completa deberá ser similar al siguiente ejemplo.

   ```
   https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

1. Desde la línea de comandos, ejecute el comando `curl` utilizando el ARN de la máquina de estado y, a continuación, invoque la dirección URL de su implementación, como se muestra en el siguiente ejemplo.

   ```
   curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

   Se devuelven el ARN de ejecución y su fecha de época, como se muestra en el siguiente ejemplo.

   ```
   {"executionArn":"arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}
   ```
**nota**  
Si aparece el error "Falta el token de autenticación", asegúrese de que la URL de invocación termine en **/execution**.