

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.

# Inicio de un flujo de trabajo de Step Functions en respuesta a eventos
<a name="tutorial-cloudwatch-events-s3"></a>

Puedes ejecutar una máquina de AWS Step Functions estados en respuesta a un evento enviado por una EventBridge regla de Amazon a Step Functions como objetivo. 

El siguiente tutorial muestra cómo configurar una máquina de estados como destino de una EventBridge regla de Amazon. Siempre que se añadan archivos a un bucket de Amazon Simple Storage Service (Amazon S3), EventBridge la regla iniciará la máquina de estados.

Un ejemplo práctico de este enfoque podría ser una máquina de estado que ejecute el análisis de Amazon Rekognition en los archivos de imagen agregados al bucket para categorizar y asignar palabras clave.

En este tutorial, la ejecución de una máquina de estado de `Helloworld` se inicia cargando un archivo a un bucket de Amazon S3. A continuación, revisa la entrada de ejemplo de esa ejecución para identificar la información que se incluye en la entrada de la notificación de evento de Amazon S3 enviada a EventBridge.

## Requisito previo: Creación de una máquina de estado
<a name="tutorial-cloudwatch-events-s3-prereqs"></a>

Antes de poder configurar una máquina de estados como EventBridge destino de Amazon, debe crear la máquina de estados.
+ Para crear una máquina de estados básica, utilice el tutorial [Creating state machine that uses a Lambda function](tutorial-creating-lambda-state-machine.md).
+ Si ya tiene una maquina de estado `Helloworld`, continúe en el paso siguiente.

## Paso 1: Crear un bucket en Amazon S3
<a name="tutorial-cloudwatch-events-s3-bucket"></a>

Ahora que tiene una máquina de estado de `Helloworld`, debe crear un bucket de Amazon S3 que almacene sus archivos. En el paso 3 de este tutorial, configurará una regla para que, cuando se cargue un archivo en este depósito, se EventBridge desencadene la ejecución de su máquina de estados.

1. Navegue hasta la [consola de Amazon S3](https://console.aws.amazon.com/s3/) y, a continuación, elija **Crear bucket** para crear el bucket en el que desea almacenar los archivos y desencadenar una regla de eventos de Amazon S3.

1. Escriba un nombre en **Nombre del bucket**, como `{{username}}-sfn-tutorial`.
**nota**  
Los nombres de los buckets deben ser únicos en todos los nombres de bucket existentes en todas AWS las regiones de Amazon S3. Use los suyos propios {{username}} para hacer que este nombre sea único. Debes crear todos los recursos en la misma AWS región.

1. Mantenga todas las selecciones predeterminadas de la página y elija **Crear bucket**.

## Paso 2: Habilite la notificación de eventos de Amazon S3 con EventBridge
<a name="tutorial-cloudwatch-events-s3-eb-notification"></a>

Después de crear el bucket de Amazon S3, configúrelo para que envíe eventos EventBridge siempre que ocurran ciertos eventos en su bucket de S3, como la carga de archivos.

1. Vaya a la [consola de Amazon IVS](https://console.aws.amazon.com/s3/).

1. En la lista **Buckets**, seleccione el nombre del bucket para el que desea habilitar eventos.

1. Seleccione **Propiedades**.

1. Desplázate hacia abajo en la página para ver la sección **Notificaciones de eventos** y, a continuación, selecciona **Editar** en la EventBridge subsección de **Amazon**.

1. En **Enviar notificaciones a Amazon EventBridge para todos los eventos de este grupo**, selecciona **Activado**.

1. Seleccione **Save changes (Guardar cambios)**.
**nota**  
Tras activarlo EventBridge, los cambios tardarán unos cinco minutos en surtir efecto.

## Paso 3: Crea una EventBridge regla de Amazon
<a name="tutorial-cloudwatch-events-s3-cwe"></a>

Cuando tenga una máquina de estados y haya creado el bucket de Amazon S3 y lo haya configurado para enviar notificaciones de eventos EventBridge, cree una EventBridge regla.

**nota**  
Debe configurar la EventBridge regla en la misma AWS región que el bucket de Amazon S3.

### Para crear la regla de
<a name="tutorial-cloudwatch-events-s3-create-rule"></a>

1. Ve a la [ EventBridge consola de Amazon](https://console.aws.amazon.com/events/) y selecciona **Crear regla**.
**sugerencia**  
Como alternativa, en el panel de navegación de la EventBridge consola, selecciona **Reglas** en **Autobuses** y, a continuación, selecciona **Crear regla**.

1. Escriba un **Nombre** para la regla (por ejemplo, `{{S3Step Functions}}`) y, si lo desea, introduzca una **Descripción**.

1. Para **Bus de eventos** y **Tipo de regla**, mantenga las selecciones predeterminadas.

1. Elija **Siguiente**. Se abrirá la página **Crear un patrón de eventos**.

1. Desplácese hacia abajo hasta la sección **Patrón de eventos** y haga lo siguiente:

   1. **En Origen de eventos**, mantenga la selección predeterminada de **AWS eventos o eventos EventBridge asociados**.

   1. En **Service de AWS **, seleccione **Simple Storage Service (S3)**.

   1. En **Tipo de evento**, seleccione **Notificación de eventos de Amazon S3**.

   1. Seleccione **Eventos específicos** y, a continuación, **Objeto creado**.

   1. Elija **Bucket(s) específico(s) por nombre** y escriba el nombre del bucket que creó en el [paso 1](#tutorial-cloudwatch-events-s3-bucket) (`{{username}}-sfn-tutorial`) para almacenar los archivos.

   1. Elija **Siguiente**. Se abrirá la página **Seleccionar destinos**.

### Para crear el destino
<a name="tutorial-cloudwatch-events-s3-create-rule2"></a>

1. En **Destino 1**, mantenga la selección predeterminada de **Servicio de AWS **.

1. En la lista desplegable **Seleccionar un destino**, seleccione la **Máquina de estado de Step Functions**.

1. En la lista **Máquina de estado**, seleccione la máquina de estado que [creó anteriormente](#tutorial-cloudwatch-events-s3-prereqs) (por ejemplo, `Helloworld`).

1. Mantenga todas las selecciones predeterminadas de la página y elija **Siguiente**. Se abrirá la página **Configurar etiquetas**.

1. Vuelva a seleccionar **Siguiente**. Se abrirá la página **Revisar y crear**.

1. Revise los detalles de la regla y elija **Crear regla**.

   Se crea la regla y se muestra la página **Reglas**, en la que se muestran todas tus EventBridge reglas de Amazon.

## Paso 4: Probar la regla
<a name="tutorial-cloudwatch-events-test-rule"></a>

Ahora que todo está preparado, pruebe a agregar un archivo al bucket de Amazon S3 y, a continuación, observe la entrada de la ejecución resultante de la máquina de estado.

1. Agregue un archivo al bucket de Amazon S3.

   Vaya a la [consola de Amazon S3](https://console.aws.amazon.com/s3/), seleccione el bucket que ha creado para almacenar archivos (`{{username}}-sfn-tutorial`) y, a continuación, elija **Cargar**.

1. Agregue un archivo, por ejemplo `{{test.png}}`, y elija **Cargar**.

   Esta acción inicia una ejecución de la máquina de estado, que pasa información de AWS CloudTrail como entrada.

1. Compruebe la ejecución de la máquina de estado.

   Ve a la [consola Step Functions y selecciona la máquina de estados utilizada en tu EventBridge regla de Amazon (`Helloworld`)](https://console.aws.amazon.com/states/).

1. Seleccione la ejecución más reciente de esa máquina de estado y amplíe la sección **Entrada de ejecución**.

   Esta entrada incluye información como el nombre del bucket y el nombre del objeto. En un caso de uso real, una máquina de estado puede utilizar esta entrada para realizar acciones con ese objeto.

## Ejemplo de entrada de ejecución
<a name="tutorial-cloudwatch-events-example"></a>

En el siguiente ejemplo se muestra una entrada típica en la ejecución de la máquina de estado.

```
{
    "version": "0",
    "id": "6c540ad4-0671-9974-6511-756fbd7771c3",
    "detail-type": "Object Created",
    "source": "aws.s3",
    "account": "123456789012",
    "time": "2023-06-23T23:45:48Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:s3:::{{username}}-sfn-tutorial"
    ],
    "detail": {
      "version": "0",
      "bucket": {
        "name": "{{username}}-sfn-tutorial"
      },
      "object": {
        "key": "test.png",
        "size": 800704,
        "etag": "f31d8546bb67845b4d3048cde533b937",
        "sequencer": "00621049BA9A8C712B"
      },
      "request-id": "79104EXAMPLEB723",
      "requester": "123456789012",
      "source-ip-address": "200.0.100.11",
      "reason": "PutObject"
    }
  }
```