Primeros pasos: crea una regla de bus de EventBridge eventos de Amazon - Amazon EventBridge

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.

Primeros pasos: crea una regla de bus de EventBridge eventos de Amazon

Para familiarizarnos con EventBridge las reglas y sus capacidades, utilizaremos una AWS CloudFormation plantilla para configurar una regla de bus de eventos y los componentes asociados, incluidos el origen, el patrón de eventos y el destino. A continuación, analizaremos cómo funcionan las reglas para seleccionar los eventos que desees.

La plantilla crea una regla en el bus de eventos predeterminado. Esta regla usa un patrón de eventos para filtrar los eventos de un bucket de Amazon S3 específico. La regla envía los eventos coincidentes al objetivo especificado, un tema de Amazon SNS. Cada vez que se crea un objeto en el bucket, la regla envía una notificación al tema y, a continuación, envía un correo electrónico a la dirección de correo electrónico especificada.

Los recursos desplegados consisten en:

  • Un bucket de Amazon S3 con EventBridge notificaciones habilitadas para actuar como fuente de eventos.

  • Un tema de Amazon SNS y una suscripción por correo electrónico como destino de las notificaciones.

  • Una función de ejecución que concede EventBridge los permisos necesarios para publicar en el tema de Amazon SNS.

  • La regla en sí, que:

    • Define un patrón de eventos que coincide únicamente con Object Created los eventos del bucket específico de Amazon S3.

    • Especifica el tema de Amazon SNS como destino al que se envían eventos EventBridge coincidentes.

Para obtener detalles técnicos específicos de la plantilla, consultedetalles de la plantilla.

Los eventos de Amazon S3 coinciden con el patrón de eventos de la regla y, si coinciden, se envían a un tema de SNS.

Antes de empezar

Para recibir eventos de Amazon S3 EventBridge, debe habilitarlos EventBridge en Amazon S3. En este tema EventBridge se supone que está activado. Para obtener más información, consulte Habilitación EventBridge en la Guía del usuario de Amazon S3.

Crear la regla mediante CloudFormation

Para crear la regla y sus recursos asociados, crearemos una CloudFormation plantilla y la usaremos para crear una pila que contenga una regla de ejemplo, con el origen y el destino.

importante

Se te facturarán los recursos de Amazon utilizados si creas una pila a partir de esta plantilla.

Primero, crea la CloudFormation plantilla.

  1. En la Plantilla sección, haz clic en el icono de copia de la pestaña JSON o YAML para copiar el contenido de la plantilla.

  2. Pegue el contenido de la plantilla en un archivo nuevo.

  3. Guarde el archivo localmente.

A continuación, usa la plantilla que has guardado para aprovisionar una CloudFormation pila.

Crea la pila con CloudFormation (consola)
  1. Abre la CloudFormation consola en https://console.aws.amazon.com/cloudformation/.

  2. En la página Stacks, en el menú Crear pila, elige entre los nuevos recursos (estándar).

  3. Especifica la plantilla:

    1. En Requisito previo, elija Elegir una plantilla existente.

    2. En Especificar plantilla, elija Cargar un archivo de plantilla.

    3. Elija Elegir archivo, navegue hasta el archivo de plantilla y elíjalo.

    4. Elija Siguiente.

  4. Especifique los detalles de la pila:

    1. Introduzca un nombre de pila.

    2. Para los parámetros, acepte los valores predeterminados de BucketNameSNSTopicDisplayName, SNSTopicNombre y RuleName, o bien introduzca los suyos propios.

    3. Para EmailAddress, introduzca una dirección de correo electrónico válida en la que desee recibir las notificaciones.

    4. Elija Siguiente.

  5. Configure las opciones de pila:

    1. En las opciones de error de pila, selecciona Eliminar todos los recursos recién creados.

      nota

      Al elegir esta opción, se evita que se le facturen los recursos cuya política de eliminación especifique que se conservarán incluso si se produce un error al crear la pila. Para obtener más información, consulte el DeletionPolicyatributo en la Guía del CloudFormation usuario.

    2. Acepte todos los demás valores predeterminados.

    3. En Capacidades, active la casilla para confirmar que se CloudFormation podrían crear recursos de IAM en su cuenta.

    4. Elija Siguiente.

  6. Revisa los detalles de la pila y selecciona Enviar.

Crea la pila con CloudFormation (AWS CLI)

También puedes usar el AWS CLI para crear la pila.

  • Utilice el comando create-stack.

    • Acepte los valores de los parámetros de plantilla predeterminados, especificando el nombre de la pila y su dirección de correo electrónico. Utilice el template-body parámetro para transmitir el contenido de la plantilla o template-url para especificar una ubicación URL.

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ --template-body template-contents \ --parameters ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ --capabilities CAPABILITY_IAM
    • Anule los valores predeterminados de uno o más parámetros de la plantilla. Por ejemplo:

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ ----template-body template-contents \ --parameters \ ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ ParameterKey=BucketName,ParameterValue=my-custom-bucket-name \ ParameterKey=RuleName,ParameterValue=my-custom-rule-name \ --capabilities CAPABILITY_IAM

CloudFormation crea la pila. Una vez finalizada la creación de la pila, los recursos de la pila están listos para usarse. Puedes usar la pestaña Recursos de la página de detalles de la pila para ver los recursos que se aprovisionaron en tu cuenta.

Una vez creada la pila, recibirás un correo electrónico de confirmación de la suscripción en la dirección que has indicado. Debes confirmar esta suscripción para recibir notificaciones.

Explorando las capacidades de las reglas

Una vez creada la regla, puede usar la EventBridge consola para observar el funcionamiento de la regla y probar la entrega de eventos.

  1. ¿Abrir la EventBridge consola en https://console.aws.amazon.com/events/casa? #/reglas.

  2. Elige la regla que has creado.

    En la página de detalles de la regla, la sección Detalles de la regla muestra información sobre la regla, incluidos su patrón de eventos y sus objetivos.

Examinar el patrón de eventos

Antes de probar el funcionamiento de la regla, examinemos el patrón de eventos que hemos especificado para controlar qué eventos se envían al objetivo. La regla solo enviará al objetivo los eventos que coincidan con los criterios del patrón. En este caso, solo queremos el evento que Amazon S3 genera cuando se crea un objeto en nuestro bucket específico.

  • En la página de detalles de la regla, en Patrón de eventos, puede ver que el patrón de eventos selecciona solo eventos en los que:

    • La fuente es el servicio Amazon S3 (aws.s3)

    • El tipo de detalle es Object Created

    • El nombre del depósito coincide con el nombre del depósito que hemos creado

    { "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "bucket": { "name": ["eventbridge-rule-example-source"] } } }

Enviar eventos a través de la regla

A continuación, generaremos eventos en la fuente de eventos para comprobar que la coincidencia y la entrega de las reglas funcionan correctamente. Para ello, cargaremos un objeto en el bucket de S3 que especificamos como origen del evento.

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista de cubos, elige el depósito que creaste con la plantilla (nombre predeterminado:eventbridge-rule-example-source).

  3. Seleccione Cargar.

  4. Sube un archivo de prueba para generar un Object Created evento:

    1. Elige Añadir archivos y selecciona un archivo de tu ordenador.

    2. Seleccione Cargar.

  5. Espere unos instantes a que procese el evento EventBridge y se envíe la notificación.

  6. Comprueba tu correo electrónico para ver si hay una notificación sobre el evento de creación del objeto. El correo electrónico contendrá detalles sobre el evento de S3, incluidos el nombre del depósito y la clave del objeto.

Ver las métricas de las reglas

Puedes ver las métricas de tu regla para confirmar que los eventos se están procesando correctamente.

  1. En la EventBridge consola, elige tu regla.

  2. Elija la pestaña Metrics (Métricas).

  3. Puedes ver métricas como las siguientes:

    • Invocaciones: el número de veces que se activó la regla.

    • TriggeredRules: el número de reglas que se activaron al coincidir eventos.

Limpiar: eliminar recursos

Como último paso, eliminaremos la pila y los recursos que contiene.

importante

Se te facturarán los recursos de Amazon contenidos en la pila mientras exista.

  1. Abre la CloudFormation consola en. https://console.aws.amazon.com/cloudformation/

  2. En la página Stacks, selecciona la pila creada a partir de la plantilla, selecciona Eliminar y, a continuación, confirma Eliminar.

    CloudFormation inicia la eliminación de la pila y de todos los recursos que incluye.

CloudFormation detalles de la plantilla

Esta plantilla crea recursos y concede permisos en tu cuenta.

Recursos

La CloudFormation plantilla de este tutorial creará los siguientes recursos en su cuenta:

importante

Se te facturarán los recursos de Amazon utilizados si creas una pila a partir de esta plantilla.

  • AWS::S3::Bucket: un bucket de Amazon S3 que actúa como fuente de eventos para la regla, con EventBridge las notificaciones habilitadas.

  • AWS::SNS::Topic: un tema de Amazon SNS que actúa como objetivo de los eventos que coinciden con la regla.

  • AWS::SNS::Subscription: Una suscripción por correo electrónico al tema de SNS.

  • AWS::IAM::Role: Una función de ejecución de IAM que otorga permisos al EventBridge servicio de su cuenta.

  • AWS::Events::Rule: La regla que conecta los eventos del bucket de Amazon S3 con el tema Amazon SNS.

Permisos

La plantilla incluye un AWS::IAM::Role recurso que representa una función de ejecución. Este rol otorga al EventBridge servicio (events.amazonaws.com) los siguientes permisos en su cuenta.

Los siguientes permisos se otorgan a través de la política administradaAmazonSNSFullAccess:

  • Acceso total a los recursos y operaciones de Amazon SNS

CloudFormation plantilla

Guarda el siguiente código YAML como un archivo independiente para usarlo como CloudFormation plantilla en este tutorial.

YAML
AWSTemplateFormatVersion: '2010-09-09' Description: '[AWSDocs] EventBridge: event-bus-rule-get-started' Parameters: BucketName: Type: String Description: Name of the S3 bucket Default: eventbridge-rule-example-source SNSTopicDisplayName: Type: String Description: Display name for the SNS topic Default: eventbridge-rule-example-target SNSTopicName: Type: String Description: Name for the SNS topic Default: eventbridge-rule-example-target RuleName: Type: String Description: Name for the EventBridge rule Default: eventbridge-rule-example EmailAddress: Type: String Description: Email address to receive notifications AllowedPattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$' Resources: # S3 Bucket with notifications enabled S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketName NotificationConfiguration: EventBridgeConfiguration: EventBridgeEnabled: true # SNS Topic for email notifications SNSTopic: Type: AWS::SNS::Topic Properties: DisplayName: !Ref SNSTopicDisplayName TopicName: !Ref SNSTopicName # SNS Subscription for email SNSSubscription: Type: AWS::SNS::Subscription Properties: Protocol: email Endpoint: !Ref EmailAddress TopicArn: !Ref SNSTopic # EventBridge Rule to match S3 object creation events and send them to the SNS topic EventBridgeRule: Type: AWS::Events::Rule Properties: Name: !Ref RuleName Description: "Rule to detect S3 object creation and send email notification" EventPattern: source: - aws.s3 detail-type: - "Object Created" detail: bucket: name: - !Ref BucketName State: ENABLED Targets: - Id: SendToSNS Arn: !Ref SNSTopic RoleArn: !GetAtt EventBridgeRole.Arn # IAM Role for EventBridge to publish to SNS EventBridgeRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: events.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonSNSFullAccess Outputs: BucketName: Description: Name of the S3 bucket Value: !Ref S3Bucket SNSTopicARN: Description: ARN of the SNS topic Value: !Ref SNSTopic EmailSubscription: Description: Email address for notifications Value: !Ref EmailAddress
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "[AWSDocs] EventBridge: event-bus-rule-get-started", "Parameters": { "BucketName": { "Type": "String", "Description": "Name of the S3 bucket", "Default": "eventbridge-rule-example-source" }, "SNSTopicDisplayName": { "Type": "String", "Description": "Display name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "SNSTopicName": { "Type": "String", "Description": "Name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "RuleName": { "Type": "String", "Description": "Name for the EventBridge rule", "Default": "eventbridge-rule-example" }, "EmailAddress": { "Type": "String", "Description": "Email address to receive notifications", "AllowedPattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$" } }, "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": { "Ref": "BucketName" }, "NotificationConfiguration": { "EventBridgeConfiguration": { "EventBridgeEnabled": true } } } }, "SNSTopic": { "Type": "AWS::SNS::Topic", "Properties": { "DisplayName": { "Ref": "SNSTopicDisplayName" }, "TopicName": { "Ref": "SNSTopicName" } } }, "SNSSubscription": { "Type": "AWS::SNS::Subscription", "Properties": { "Protocol": "email", "Endpoint": { "Ref": "EmailAddress" }, "TopicArn": { "Ref": "SNSTopic" } } }, "EventBridgeRule": { "Type": "AWS::Events::Rule", "Properties": { "Name": { "Ref": "RuleName" }, "Description": "Rule to detect S3 object creation and send email notification", "EventPattern": { "source": [ "aws.s3" ], "detail-type": [ "Object Created" ], "detail": { "bucket": { "name": [ { "Ref": "BucketName" } ] } } }, "State": "ENABLED", "Targets": [ { "Id": "SendToSNS", "Arn": { "Ref": "SNSTopic" }, "RoleArn": { "Fn::GetAtt": [ "EventBridgeRole", "Arn" ] } } ] } }, "EventBridgeRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/AmazonSNSFullAccess" ] } } }, "Outputs": { "BucketName": { "Description": "Name of the S3 bucket", "Value": { "Ref": "S3Bucket" } }, "SNSTopicARN": { "Description": "ARN of the SNS topic", "Value": { "Ref": "SNSTopic" } }, "EmailSubscription": { "Description": "Email address for notifications", "Value": { "Ref": "EmailAddress" } } } }