View a markdown version of this page

Creación de recursos de Event Bus personalizados con CloudFormation - 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.

Creación de recursos de Event Bus personalizados con CloudFormation

Puede crear un bus, sus suscriptores, sus fuentes de eventos y su política de recursos a partir de una CloudFormation plantilla. Los tipos de recursos están en el espacio de AWS::EventsV2 nombres. Los AWS::Events tipos pertenecen a Custom Event Bus - Classic y no pueden configurar un bus de eventos personalizado.

Los tipos de recursos

  • AWS::EventsV2::EventBuses un bus, incluidos su período de retención y su clave de cifrado. RequiereName.

  • AWS::EventsV2::Subscriberes un suscriptor en un bus: sus filtros, su transformación, su política de reintentos y su objetivo único. RequiereName, y EventBusArnInvokeConfiguration, lo que a su vez requiere TargetArn yRoleArn.

  • AWS::EventsV2::EventSourcees una fuente gestionada de eventos de AWS servicio o eventos de socios en un autobús. Requiere NameEventBusArn, yConfiguration. Consulte Fuentes de eventos para un bus de eventos personalizado.

  • AWS::EventsV2::ResourcePolicyes la política de recursos de un autobús que ya existe. Requiere EventBusArn yPolicyDocument. Consulte Control de acceso para el bus de eventos personalizado.

El suscriptor RoleArn debe nombrar un rol en la misma cuenta que el suscriptor. Por lo tanto, un bus compartido entre cuentas es más que una pila: el bus en la cuenta del propietario y el objetivo, el rol de entrega y el suscriptor en cada cuenta consumidora.

Ejemplo: un autobús, una cola y un suscriptor

La siguiente plantilla crea un autobús que retiene los eventos durante siete días, una cola de Amazon SQS, una cola de correo no enviado, una función de entrega y un suscriptor que entrega los pedidos de más de 500 a la cola. CloudFormation crea el rol y las colas antes que el suscriptor, porque el suscriptor hace referencia a ellos con. Fn::GetAtt El período de retención decide desde cuándo un suscriptor puede empezar a leer; consulteReproducción de eventos retenidos para un suscriptor.

AWSTemplateFormatVersion: '2010-09-09' Resources: OrdersBus: Type: AWS::EventsV2::EventBus Properties: Name: orders Description: Order events for the fulfillment platform StorageConfiguration: RetentionPeriodInDays: 7 OrdersQueue: Type: AWS::SQS::Queue Properties: QueueName: large-orders OrdersDeadLetterQueue: Type: AWS::SQS::Queue Properties: QueueName: large-orders-dlq DeliveryRole: Type: AWS::IAM::Role Properties: RoleName: EventBusDeliveryRole AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: events.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: DeliverToQueues PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: sqs:SendMessage Resource: - !GetAtt OrdersQueue.Arn - !GetAtt OrdersDeadLetterQueue.Arn LargeOrders: Type: AWS::EventsV2::Subscriber Properties: Name: large-orders EventBusArn: !Ref OrdersBus FilterConfiguration: Filters: - Scope: DATA Pattern: '{"detail":{"total":[{"numeric":[">",500]}]}}' InvokeConfiguration: TargetArn: !GetAtt OrdersQueue.Arn RoleArn: !GetAtt DeliveryRole.Arn RetryPolicy: MaxRetryAttempts: 10 MaxEventAgeInSeconds: 3600 OnFailureConfiguration: Arn: !GetAtt OrdersDeadLetterQueue.Arn Outputs: OrdersBusArn: Value: !Ref OrdersBus Export: Name: orders-bus-arn

La función de entrega confía en el principal del events.amazonaws.com servicio y concede sqs:SendMessage en ambas colas. Si la concesión no pasa a la cola de cartas muertas, no se puede registrar un error en la entrega y no se puede observar nada. La identidad que implementa la pila también debe iam:PassRole figurar en la función de entrega.

Valores de retorno:

Refdevuelve el identificador principal del recurso, un ARN. Fn::GetAttdevuelve las propiedades de solo lectura. En la tabla siguiente se enumeran los valores de cada tipo de recurso.

Tipo de recurso Ref devuelve Fn::GetAttatributos
AWS::EventsV2::EventBus EventBusArn EventBusArn, State, CreationTime, LastModifiedTime
AWS::EventsV2::Subscriber SubscriberArn SubscriberArn, BusName, CreationTime, LastModifiedTime
AWS::EventsV2::EventSource EventSourceArn EventSourceArn, State, Revoked, CreationTime, LastModifiedTime
AWS::EventsV2::ResourcePolicy EventBusArn RevisionId

La de un suscriptor State es una propiedad que estableces, no un atributo que lees. Configúrala STOPPED para pausar la entrega y volver a activarla RUNNING para reanudarla. El de un bus State es de solo lectura y su valor fijo es. ACTIVE

Propiedades que sustituyen al recurso

Seis propiedades de suscriptor son de solo creación, por lo que al cambiar cualquiera de ellas en una plantilla se reemplaza al suscriptor:Name,EventBusArn,InvokeConfiguration.TargetArn, TypeStartingPosition, y. PointInTimeConfiguration Todas las demás propiedades del suscriptor, incluidos los filtros, la transformación, la política de reintentos y la cola de mensajes muertos, se actualizan en su lugar.

importante

Un suscriptor que reemplaza elimina al suscriptor anterior antes de crear el nuevo. No existe ningún suscriptor entre los dos pasos. A continuaciónStartingPosition, el nuevo suscriptor comienza por su cuenta y LATEST comienza por los eventos más recientes, por lo que nunca publica los eventos publicados durante ese período. Por lo tanto, si cambias un ARN objetivo, un tipo de pedido o una posición inicial, se eliminan los eventos, a menos que planifiques la diferencia.

Para evitar esa brecha, despliega dos veces. En primer lugar, añada el suscriptor de reemplazo con una nueva identificación lógica y espere State a que llegueRUNNING. A continuación, elimine el suscriptor anterior en una segunda implementación. Ambos suscriptores realizan la entrega durante la superposición, por lo que el objetivo recibe dos veces cada evento coincidente; utilice este enfoque solo cuando se acepten duplicados.

Si no puede realizar la implementación dos veces, StartingPosition defina el nuevo suscriptor POINT_IN_TIME como y asigne PointInTimeConfiguration una TIMESTAMP aStartingPoint, en segundos desde la época PointType de Unix, desde antes de la implementación. A continuación, el suscriptor lee los eventos que no ha detectado, siempre que se encuentren dentro del período de retención establecido.

En un autobús, solo Name es de creación, por lo que el período de retención, la descripción, la clave de cifrado y las etiquetas se actualizan en su lugar. En una fuente de eventos, Name y EventBusArn son de solo creación, y en una política de recursos, sí. EventBusArn

Haciendo referencia a un bus desde otra pila

Un suscriptor necesita el ARN completo del bus, que incluye el identificador generado por el servicio después del nombre del bus. Almacene y pase el ARN, no el nombre. Consulte Nombres, puntos finales y permisos de IAM para el bus de eventos personalizado.

Dentro de una cuenta y una región, exporte el ARN de la pila propietaria del bus, como en el ejemplo, e impórtelo con él. EventBusArn: !ImportValue orders-bus-arn CloudFormation no permite cambiar o eliminar un valor exportado mientras otra pila lo importa. Al cambiar el nombre del bus, este se reemplaza y cambia su ARN, por lo que no se puede cambiar el nombre mientras existe una importación. Elimine primero el suscriptor importador o expórtelo con un nombre nuevo.

No se puede importar una exportación desde otra cuenta u otra región. En su lugar, pase el ARN del bus a la pila consumidora como parámetro de plantilla. El propietario del bus también debe conceder a la otra cuenta el permiso de uso del bus, lo que se hace con una política de recursos o con AWS Resource Access Manager (AWS RAM). Consulte Control de acceso para el bus de eventos personalizado.