Primeros pasos: crea una EventBridge pipa 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 EventBridge pipa de Amazon

Para familiarizarnos con las tuberías y sus capacidades, utilizaremos una AWS CloudFormation plantilla para configurar una EventBridge tubería y los componentes asociados. Luego, podemos explorar varias características de la tubería.

La plantilla crea una EventBridge tubería que conecta una transmisión de una tabla de DynamoDB a una cola de Amazon SQS. Cada vez que se crea o modifica un registro en la tabla de la base de datos, la canalización envía el evento resultante a la cola.

La tubería desplegada se compone de:

  • Una tabla (y una transmisión) de DynamoDB que actúe como fuente de canalización y una cola de Amazon SQS como destino.

  • Una función de ejecución que concede EventBridge los permisos necesarios para acceder a la tabla de DynamoDB y a la cola de Amazon SQS.

  • La propia canalización, que contiene un filtro de eventos que selecciona únicamente los eventos generados al crear (insertar) o modificar un elemento de la tabla.

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

Los eventos de la base de datos se comparan con un filtro y, si coinciden, se envían a una cola.

Crear la tubería mediante AWS CloudFormation

Para crear la tubería y sus recursos asociados, crearemos una CloudFormation plantilla y la usaremos para crear una pila que contenga una tubería de muestra, completa 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.

Crear la plantilla

En primer lugar, 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.

Creación de la pila de

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

  1. Abre la AWS CloudFormation consola.

  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 o introduzca los suyos propios.

    3. Elija Siguiente.

  5. Configure las opciones de apilado:

    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 AWS 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.

AWS 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.

Explorando las capacidades de Pipe

Una vez creada la tubería, puede usar la EventBridge consola para observar el funcionamiento de la tubería y probar la emisión de eventos.

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

  2. Elija la tubería que ha creado.

    En la página de detalles de la tubería, la sección Componentes de la tubería muestra los recursos que componen la tubería y contiene pestañas que proporcionan más detalles sobre cada componente.

    La página de detalles de la tubería muestra gráficamente los componentes de origen, filtro y destino de la tubería.

    Puedes encontrar el rol de ejecución que creamos para la tubería en la pestaña Configuración, en la sección Permisos.

Examinando el filtro de tubería

Antes de probar el funcionamiento de la tubería, examinemos el filtro que hemos especificado para controlar qué eventos se envían al objetivo. La canalización solo enviará al objetivo los eventos que coincidan con los criterios del filtro; todos los demás se descartarán. En este caso, solo queremos que los eventos generados cuando se crean o modifican las entradas de la tabla se envíen a la cola de Amazon SQS.

  • En la página de detalles de la tubería, en Componentes de tubería, seleccione la pestaña Filtrado.

    Hemos incluido un filtro que selecciona solo los eventos en los que eventName está establecido en INSERT oMODIFY.

    { "eventName": ["INSERT", "MODIFY"] }

Envío de eventos a través de la canalización

A continuación, generaremos eventos en la fuente de la tubería para comprobar que el filtrado y la entrega de la tubería funcionan correctamente. Para ello, crearemos y editaremos un elemento en la tabla de DynamoDB que especificamos como fuente de canalización.

  1. En la página de detalles de la tubería, en Componentes de tubería, seleccione la pestaña Fuente.

  2. En Fuente, elija el nombre de la transmisión de DynamoDB.

    Esto abre la consola de DynamoDB en una ventana independiente, en la que se muestran los detalles de la tabla de origen.

  3. Elija Explorar elementos de la tabla.

  4. Genere un INSERT evento creando un elemento en la tabla:

    1. Seleccione Crear elemento.

    2. Añade valores para los atributos del álbum y del artista.

    3. Seleccione Crear elemento.

  5. Genera un evento DELETE y un INSERT evento editando el elemento:

    1. Elija el elemento de la lista y, en el menú Acciones, elija Editar elemento.

    2. Introduzca un nuevo valor para el atributo Álbum o Artista.

    3. Marque la casilla que confirma que está cambiando el valor de las claves del elemento y, a continuación, seleccione Recrear elemento.

      Esto hace que el elemento se elimine y, a continuación, se vuelva a crear, lo que generará un DELETE evento y, a continuación, un evento nuevoINSERT.

  6. Genera un MODIFY evento añadiendo un atributo al elemento:

    1. Elija el elemento de la lista y, en el menú Acciones, elija Editar elemento.

    2. En el menú Añadir nuevo atributo, seleccione Número.

    3. Para el nombre del atributo, introduzca Año y, a continuación, introduzca un valor para el atributo. Elija Save and close.

Confirmar la entrega del evento a través de la tubería

Por último, confirmaremos que la tubería filtró y entregó correctamente los eventos que generamos al crear y editar el elemento de la tabla en DynamoDB.

  1. En la página de detalles de la tubería, en Componentes de tubería, seleccione la pestaña Destino.

  2. En Target, elija el nombre de la cola de Amazon SQS.

    Esto abre la consola Amazon SQS en una ventana independiente, en la que se muestran los detalles de la cola de destino.

  3. Seleccione Enviar y recibir mensajes.

  4. En Recibir mensajes, seleccione Sondear los mensajes.

    Amazon SQS carga los mensajes recibidos en la cola. Haga clic en un mensaje individual para ver sus detalles.

    Debería haber tres mensajes de eventos en la cola:

    • Dos de este tipoINSERT, uno generado cuando se creó el elemento de la tabla por primera vez y el otro se generó al volver a crear el elemento cambiando un valor clave.

    • Uno de tipoMODIFY, generado al añadir un atributo al elemento de la tabla.

    Tenga en cuenta que no hay ningún mensaje de evento de este tipo DELETE en la cola, aunque se generó uno al eliminar y volver a crear el elemento de la tabla cambiando un valor clave. El filtro de tubo que especificamos solo selecciona INSERT yMODIFY, por lo tanto, filtra el DELETE evento en lugar de enviarlo a la cola.

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 AWS CloudFormation consola.

  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 AWS 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::DynamoDB::Table: una tabla de DynamoDB que actúa como fuente de eventos para la tubería.

  • AWS::SQS::Queue: una cola de Amazon SQS que actúa como objetivo de los eventos que se producen por la tubería.

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

  • AWS::Pipes::Pipe: la tubería que conecta la tabla de DynamoDB con la cola de Amazon SQS.

Permisos

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

Los siguientes permisos se refieren a la tabla y transmisión de DynamoDB que la plantilla crea como origen de eventos para la canalización:

  • dynamodb:DescribeStream

  • dynamodb:GetRecords

  • dynamodb:GetShardIterator

  • dynamodb:ListStreams

El siguiente permiso se aplica a la cola de Amazon SQS que la pila crea como destino de la canalización:

  • sqs:SendMessage

CloudFormation plantilla

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

JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "EventBridge Pipe template example. Provisions a pipe, along with a DynamoDB stream as the pipe source and an SQS queue as the pipe target. Also provisions an execution role that contains the necessary permissions to access both the source and target. Once provisioned, the pipe receives events from the DynamoDB data stream, applies a filter, and sends matching events on to an SQS Queue. You will be billed for the Amazon resources used if you create a stack from this template.", "Parameters" : { "SourceTableName" : { "Type" : "String", "Default" : "pipe-example-source", "Description" : "Specify the name of the table to provision as the pipe source, or accept the default." }, "TargetQueueName" : { "Type" : "String", "Default" : "pipe-example-target", "Description" : "Specify the name of the queue to provision as the pipe target, or accept the default." }, "PipeName" : { "Type" : "String", "Default" : "pipe-with-filtering-example", "Description" : "Specify the name of the table to provision as the pipe source, or accept the default." } }, "Resources": { "PipeSourceDynamoDBTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [{ "AttributeName": "Album", "AttributeType": "S" }, { "AttributeName": "Artist", "AttributeType": "S" } ], "KeySchema": [{ "AttributeName": "Album", "KeyType": "HASH" }, { "AttributeName": "Artist", "KeyType": "RANGE" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 10, "WriteCapacityUnits": 10 }, "StreamSpecification": { "StreamViewType": "NEW_AND_OLD_IMAGES" }, "TableName": { "Ref" : "SourceTableName" } } }, "PipeTargetQueue": { "Type": "AWS::SQS::Queue", "Properties": { "QueueName": { "Ref" : "TargetQueueName" } } }, "PipeTutorialPipeRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "pipes.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": { "Fn::Join": [ "", [ "arn:", { "Ref": "AWS::Partition" }, ":pipes:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":pipe/", { "Ref": "PipeName" } ] ] }, "aws:SourceAccount": { "Ref" : "AWS::AccountId" } } } }] }, "Description" : "EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe.", "Path": "/", "Policies": [{ "PolicyName": "SourcePermissions", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:ListStreams" ], "Resource": [ { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] } ] }] } }, { "PolicyName": "TargetPermissions", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": [ { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] } ] }] } } ] } }, "PipeWithFiltering": { "Type": "AWS::Pipes::Pipe", "Properties": { "Description" : "EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue.", "Name": { "Ref" : "PipeName" }, "RoleArn": {"Fn::GetAtt" : ["PipeTutorialPipeRole", "Arn"] }, "Source": { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] }, "SourceParameters": { "DynamoDBStreamParameters" : { "StartingPosition" : "LATEST" }, "FilterCriteria" : { "Filters" : [ { "Pattern" : "{ \"eventName\": [\"INSERT\", \"MODIFY\"] }" }] } }, "Target": { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] } } } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Description: EventBridge Pipe template example. Provisions a pipe, along with a DynamoDB stream as the pipe source and an SQS queue as the pipe target. Also provisions an execution role that contains the necessary permissions to access both the source and target. Once provisioned, the pipe receives events from the DynamoDB data stream, applies a filter, and sends matching events on to an SQS Queue. You will be billed for the Amazon resources used if you create a stack from this template. Parameters: SourceTableName: Type: String Default: pipe-example-source Description: Specify the name of the table to provision as the pipe source, or accept the default. TargetQueueName: Type: String Default: pipe-example-target Description: Specify the name of the queue to provision as the pipe target, or accept the default. PipeName: Type: String Default: pipe-with-filtering-example Description: Specify the name of the table to provision as the pipe source, or accept the default. Resources: PipeSourceDynamoDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: Album AttributeType: S - AttributeName: Artist AttributeType: S KeySchema: - AttributeName: Album KeyType: HASH - AttributeName: Artist KeyType: RANGE ProvisionedThroughput: ReadCapacityUnits: 10 WriteCapacityUnits: 10 StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES TableName: !Ref SourceTableName PipeTargetQueue: Type: AWS::SQS::Queue Properties: QueueName: !Ref TargetQueueName PipeTutorialPipeRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: pipes.amazonaws.com Action: sts:AssumeRole Condition: StringLike: aws:SourceArn: !Join - '' - - 'arn:' - !Ref AWS::Partition - ':pipes:' - !Ref AWS::Region - ':' - !Ref AWS::AccountId - ':pipe/' - !Ref PipeName aws:SourceAccount: !Ref AWS::AccountId Description: EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe. Path: / Policies: - PolicyName: SourcePermissions PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeStream - dynamodb:GetRecords - dynamodb:GetShardIterator - dynamodb:ListStreams Resource: - !GetAtt PipeSourceDynamoDBTable.StreamArn - PolicyName: TargetPermissions PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - sqs:SendMessage Resource: - !GetAtt PipeTargetQueue.Arn PipeWithFiltering: Type: AWS::Pipes::Pipe Properties: Description: EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue. Name: !Ref PipeName RoleArn: !GetAtt PipeTutorialPipeRole.Arn Source: !GetAtt PipeSourceDynamoDBTable.StreamArn SourceParameters: DynamoDBStreamParameters: StartingPosition: LATEST FilterCriteria: Filters: - Pattern: '{ "eventName": ["INSERT", "MODIFY"] }' Target: !GetAtt PipeTargetQueue.Arn