

# Creación de una regla que se desencadena en función de un evento Amazon RDS
<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**
+ [Creación de reglas para enviar eventos de Amazon RDS a Amazon EventBridge](#rds-cloudwatch-events.sending-to-cloudwatch-events)
+ [Tutorial: Registrar el estado de una instancia de base de datos con Amazon EventBridge](#log-rds-instance-state)

## Creación de reglas para enviar eventos de Amazon RDS a Amazon EventBridge
<a name="rds-cloudwatch-events.sending-to-cloudwatch-events"></a>

Puede escribir reglas sencillas para indicar qué eventos de Amazon RDS le resultan de interés, así como qué acciones automatizadas se van a llevar a cabo cuando un evento cumple una de las reglas. Puede configurar varios destinos, como una función de AWS Lambda o un tema de Amazon SNS, que reciban eventos en formato JSON. Por ejemplo, puede configurar Amazon RDS para enviar eventos a Amazon EventBridge cada vez que se cree o elimine una instancia de base de datos. Para obtener más información, consulte la [guía del usuario de Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/) y la [guía del usuario de Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/).

**Para crear una regla que se active en función de un evento RDS:**

1. Abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación, en **Events (Eventos)**, elija **Rules (Reglas)**.

1. Elija **Create rule**.

1. En **Event Source**, haga lo siguiente:

   1. Seleccione **Event Pattern**.

   1. En **Service Name (Nombre de servicio)**, elija **Relational Database Service (RDS)**.

   1. En **Event Type (Tipo de evento)**, elija el tipo de recurso de Amazon RDS que desencadena el evento. Por ejemplo, si una instancia de base de datos desencadena el evento, elija **RDS DB Instance Event (Evento de instancia de base de datos de RDS)**.

1. En **Targets (Destinos)**, seleccione **Add Target (Agregar destino)** y elija el servicio de AWS que va a actuar cuando se detecte un evento del tipo seleccionado. 

1. En el resto de los campos de esta sección, especifique los datos concretos de este tipo de destino, si es necesario. 

1. Si hay muchos tipos de destinos, EventBridge necesita permisos para enviar eventos al destino. En estos casos, EventBridge puede crear el rol de IAM necesario para que se ejecute el evento: 
   + Para crear un rol de IAM automáticamente, elija **Creación de un nuevo rol para este recurso específico**.
   + Para utilizar una función de IAM que haya creado antes, elija **Use existing role (Usar función existente)**.

1. Si lo desea, puede repetir los pasos 5 a 7 para agregar otro destino en esta regla.

1. Seleccione **Configure details**. En **Rule definition**, escriba un nombre y la descripción de la regla.

   El nombre de la regla debe ser exclusivo dentro de esta región.

1. Elija **Create rule**.

Para obtener más información, consulte [Creating an EventBridge Rule That Triggers on an Event](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Rule.html) en la *Guía del usuario de Amazon CloudWatch*.

## 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 Amazon RDS. 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 Amazon RDS](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.