

# Creación de una regla que se desencadena en función de un evento Amazon Aurora
<a name="rds-cloud-watch-events"></a>

Al utilizar Amazon EventBridge, puede automatizar los servicios de AWS y responder a eventos del sistema, como problemas de disponibilidad de aplicaciones o cambios de recursos. 

**Topics**
+ [Tutorial: Registrar el estado de una instancia de base de datos con Amazon EventBridge](#log-rds-instance-state)

## Tutorial: Registrar el estado de una instancia de base de datos con Amazon EventBridge
<a name="log-rds-instance-state"></a>

En este tutorial puede crear una función de AWS Lambda que registre los cambios de estado de una instancia de . A continuación, puede crea una regla que ejecute la función cuando se produzca un cambio de estado de una instancia de base de datos de RDS existente. En el tutorial se asume que tiene una pequeña instancia de prueba en ejecución que puede apagar temporalmente.

**importante**  
No realice este tutorial en una instancia de base de datos de producción en ejecución.

**Topics**
+ [Paso 1: Crear una función de AWS Lambda](#rds-create-lambda-function)
+ [Paso 2: Crear una regla](#rds-create-rule)
+ [Paso 3: Probar la regla](#rds-test-rule)

### Paso 1: Crear una función de AWS Lambda
<a name="rds-create-lambda-function"></a>

Cree una función Lambda para registrar los eventos de cambio de estado. Especifique esta función cuando cree la regla.

**Para crear una función Lambda**

1. Abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Si es la primera vez que utiliza Lambda, aparecerá una página de bienvenida. Seleccione **Get Started Now**. De lo contrario, seleccione **Create function (Crear función)**.

1. Elija **Author from scratch**.

1. En la página **Create function (Crear función)**, proceda del modo siguiente:

   1. Introduzca un nombre y la descripción de la función Lambda. Por ejemplo, asigne un nombre a la función **RDSInstanceStateChange**. 

   1. En **Runtime (Tiempo de ejecución)**, seleccione **Node.js 14x**. 

   1. En **Architecture (Arquitectura)**, elija **x86\$164**.

   1. En **Execution role (Rol de ejecución)**, haga una de estas dos operaciones:
      + Elija **Create a new role with basic Lambda permissions (Crear un nuevo rol con permisos básicos de Lambda)**.
      + En **Existing role (Rol existente)**, elija **Use an existing role (Usar un rol existente)**. Elija el rol que desee usar. 

   1. Elija **Create function (Crear función)**.

1. En la página **RDSInstanceStateChange**, haga lo siguiente:

   1. En **Code source (Fuente del código)**, seleccione **index.js**. 

   1. En el panel de**index.js**, elimine el código existente.

   1. Escriba el código siguiente:

      ```
      console.log('Loading function');
      
      exports.handler = async (event, context) => {
          console.log('Received event:', JSON.stringify(event));
      };
      ```

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

### Paso 2: Crear una regla
<a name="rds-create-rule"></a>

Cree una regla para ejecutar su función Lambda siempre que lance una instancia Amazon RDS.

**Para crear la regla de EventBridge**

1. Abra la consola de Amazon EventBridge en [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. En el panel de navegación, seleccione **Reglas**.

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

1. Escriba un nombre y una descripción de la regla. Por ejemplo, escriba **RDSInstanceStateChangeRule**.

1. Elija **Rule with an event pattern (Regla con un patrón de evento)** y, a continuación, elija **Next (Siguiente)**.

1. En **Origen del evento**, elija **Eventos de AWS o eventos de socios de EventBridge**.

1. Desplácese hacia abajo en la sección **Event pattern (Patrón de eventos)**.

1. En **Origen del evento**, elija **Servicios de AWS**.

1. En **AWS service (Servicio de )**, elija **Relational Database Service (RDS)**.

1. Para **Event type (Tipo de evento)**, elija **RDS DB Instance Event (Evento de instancia de base de datos RDS)**.

1. Deje el patrón de eventos predeterminado. A continuación, elija **Siguiente**.

1. En **Target types (Tipos de destino),** elija **AWS service (Servicio de AWS)**.

1. En **Seleccione destino**, elija **Función de Lambda**.

1. En **Function (Función)**, seleccione la función Lambda que ha creado. A continuación, elija **Siguiente**.

1. En **Configure tags (Configurar etiquetas)**, elija **Next (Siguiente)**.

1. Revise los pasos de la regla. A continuación, elija **Create rule (Crear regla)**.

### Paso 3: Probar la regla
<a name="rds-test-rule"></a>

Para probar su regla, cierre una instancia de base de datos de RDS. Después de esperar unos minutos a que la instancia se detenga, compruebe que se haya invocado la función Lambda.

**Para probar la regla mediante la detención de una instancia de base de datos**

1. Abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Detenga una instancia de base de datos de RDS.

1. Abra la consola de Amazon EventBridge en [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. En el panel de navegación, elija **Rules (Reglas)** y elija el nombre de la regla que ha creado.

1. En **Detalles de la regla**, seleccione **Monitoreo**.

   Se lo redirigirá a la consola de Amazon CloudWatch. Si no se le redirige, haga clic en **Ver métricas en CloudWatch**.

1. En **All metrics (Todas las métricas)**, elija el nombre de la regla que creó.

   El gráfico debe indicar que se ha invocado la regla.

1. En el panel de navegación, seleccione **Log groups (Grupos de registro)**.

1. Seleccione el nombre del grupo de registro de su función de Lambda (**/aws/lambda/*function-name***).

1. Elija el nombre del flujo de registro para ver los datos proporcionados por la función para la instancia que ha lanzado. Debería recibir un resultado similar al siguiente:

   ```
   {
       "version": "0",
       "id": "12a345b6-78c9-01d2-34e5-123f4ghi5j6k",
       "detail-type": "RDS DB Instance Event",
       "source": "aws.rds",
       "account": "111111111111",
       "time": "2021-03-19T19:34:09Z",
       "region": "us-east-1",
       "resources": [
           "arn:aws:rds:us-east-1:111111111111:db:testdb"
       ],
       "detail": {
           "EventCategories": [
               "notification"
           ],
           "SourceType": "DB_INSTANCE",
           "SourceArn": "arn:aws:rds:us-east-1:111111111111:db:testdb",
           "Date": "2021-03-19T19:34:09.293Z",
           "Message": "DB instance stopped",
           "SourceIdentifier": "testdb",
           "EventID": "RDS-EVENT-0087"
       }
   }
   ```

   Para ver más ejemplos de eventos de RDS en formato JSON, consulte [Información general de los eventos para Aurora](working-with-events.md#rds-cloudwatch-events.sample).

1. (Opcional) Cuando haya terminado, puede abrir la consola de Amazon RDS y comenzar la instancia que ha lanzado.