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.
Crear una EventBridge conexión entre cuentas de Amazon en una organización
Sam Wilson y Robert Stone, Amazon Web Services
Resumen
Los grandes sistemas distribuidos utilizan Amazon EventBridge para comunicar los cambios de estado entre varias cuentas de Amazon Web Services (AWS) de una AWS Organizations organización. Sin embargo, por EventBridge lo general solo puede dirigirse a los puntos finales o a los consumidores de la misma Cuenta de AWS. La excepción es un bus de eventos en una cuenta diferente. Ese bus de eventos es un destino válido. Para consumir eventos de un bus de eventos de otra cuenta, los eventos deben transferirse del bus de eventos de la cuenta de origen al bus de eventos de la cuenta de destino. Para evitar problemas a la hora de gestionar eventos críticos en distintas aplicaciones Cuentas de AWS, utilice el enfoque recomendado que se presenta en este patrón.
Este patrón ilustra cómo implementar una arquitectura basada en eventos EventBridge que involucre a varios miembros de una Cuentas de AWS AWS Organizations organización. El patrón usa AWS Cloud Development Kit (AWS CDK) Toolkit y. AWS CloudFormation
EventBridge ofrece un bus de eventos sin servidor que le ayuda a recibir, filtrar, transformar, enrutar y entregar eventos. Un componente fundamental de las arquitecturas basadas en eventos, EventBridge permite separar entre los productores de mensajes y los consumidores de esos mensajes. En una sola cuenta, esto es sencillo. Una estructura entre cuentas requiere consideraciones adicionales para que los eventos del bus de eventos de una cuenta se consuman en otras cuentas de la misma organización.
Para obtener información sobre las consideraciones específicas de las cuentas para productores y consumidores, consulte la sección de información adicional.
Requisitos previos y limitaciones
Requisitos previos
Una AWS Organizations organización con al menos dos asociados Cuentas de AWS
Una función AWS Identity and Access Management (IAM) en ambas Cuentas de AWS que le permita aprovisionar la infraestructura en ambas Cuentas de AWS mediante AWS CloudFormation
AWS Command Line Interface (AWS CLI) instalado localmente
AWS CDK instalado localmente y arrancado en ambos Cuentas de AWS
Versiones de producto
Este patrón se ha creado y probado usando las siguientes herramientas y versiones:
AWS CDK Kit de herramientas 2.126.0
Node.js 18.19.0
npm 10.2.3
Python 3.12
Este patrón debería funcionar con cualquier versión de AWS CDK v2 o npm. Las versiones 13.0.0 a 13.6.0 de Node.js no son compatibles con AWS CDK.
Arquitectura
Arquitectura de destino
El siguiente diagrama muestra el flujo de trabajo de arquitectura para enviar un evento desde una cuenta y consumirlo en otra cuenta.

El flujo de trabajo consta de los pasos siguientes:
La AWS Lambda función Producer de la cuenta Source coloca un evento en el bus de EventBridge eventos de la cuenta.
La EventBridge regla de cuentas cruzadas dirige el evento a un bus de EventBridge eventos de la cuenta de destino.
El bus de EventBridge eventos de la cuenta de destino tiene una regla Lambda de destino que invoca la función Consumer Lambda.
Una práctica recomendada es utilizar una cola de mensajes fallidos (DLQ) para gestionar las invocaciones fallidas de la función de Lambda de consumidor. Sin embargo, el DLQ se omitió en esta solución para mayor claridad. Para obtener más información sobre cómo implementar una DLQ en sus flujos de trabajo y mejorar la capacidad de los flujos de trabajo para recuperarse de los errores, consulte la entrada del blog Implementación AWS Lambda
Automatización y escala
AWS CDK aprovisiona automáticamente la arquitectura requerida. EventBridge puede ampliarse a miles de registros por segundo, según el Región de AWS. Para obtener más información, consulta la documentación de EventBridge cuotas de Amazon.
Tools (Herramientas)
Servicios de AWS
AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la Nube de AWS infraestructura en el código. Este patrón utiliza el kit de AWS CDK herramientas, un kit de desarrollo en la nube de línea de comandos que te ayuda a interactuar con tu AWS CDK aplicación.
Amazon EventBridge es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, AWS Lambda funciones, puntos finales de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS
AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
AWS Organizationses un servicio de administración de cuentas que le ayuda a consolidar múltiples cuentas Cuentas de AWS en una organización que puede crear y administrar de forma centralizada.
Otras herramientas
Node.js
es un entorno de JavaScript ejecución basado en eventos diseñado para crear aplicaciones de red escalables. npm
es un registro de software que se ejecuta en un entorno Node.js y se utiliza para compartir o tomar prestados paquetes y administrar la implementación de paquetes privados. Python
es un lenguaje de programación informático de uso general.
Repositorio de código
El código de este patrón está disponible en el repositorio GitHub cross-account-eventbridge-in-organization
Prácticas recomendadas
Para conocer las mejores prácticas a la hora de trabajar con EventBridge él, consulta los siguientes recursos:
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configure las credenciales locales para la cuenta de origen y la cuenta de destino. | Revise la configuración y las credenciales nuevas y utilice el método de autenticación y credenciales que mejor se adapte a su entorno. importanteAsegúrese de configurar la autenticación tanto AWS CLI para la cuenta de origen como para la cuenta de destino. Estas instrucciones suponen que ha configurado dos perfiles de AWS de manera local: | Desarrollador de aplicaciones |
Bootstrap para ambos Cuentas de AWS. | Para arrancar las cuentas, ejecute los siguientes comandos:
| Desarrollador de aplicaciones |
Clone el código de patrón. | Para clonar el repositorio, ejecute el siguiente comando:
A continuación, cambie el directorio a la carpeta del proyecto recién clonada:
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Modifique | En la carpeta raíz del proyecto, realiza los siguientes cambios en
| Desarrollador de aplicaciones |
Despliegue los ProducerStack recursos. | Desde el directorio raíz del proyecto, ejecute el siguiente comando:
Cuando se le solicite, acepte las nuevas funciones de IAM y otros permisos relacionados con la seguridad que se hayan creado mediante ellas. AWS CloudFormation | Desarrollador de aplicaciones |
Compruebe que los ProducerStack recursos estén desplegados. | Para verificar los recursos, haga lo siguiente:
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Despliegue los ConsumerStack recursos. | Desde el directorio raíz del proyecto, ejecute el siguiente comando:
Cuando se le solicite, acepte las nuevas funciones de IAM y otros permisos relacionados con la seguridad que se hayan creado mediante ellas. CloudFormation | Desarrollador de aplicaciones |
Compruebe que los recursos estén desplegados ConsumerStack |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Invoque la función de Lambda de producción. |
| Desarrollador de aplicaciones |
Verifique que se haya recibido el evento. |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Destruye los ConsumerStack recursos. | Si utiliza este patrón como prueba, limpie los recursos implementados para evitar incurrir en costos adicionales. Desde el directorio raíz del proyecto, ejecute el siguiente comando:
Se le pedirá que confirme la eliminación de la pila. | Desarrollador de aplicaciones |
Destruye los ProducerStack recursos. | Desde el directorio raíz del proyecto, ejecute el siguiente comando:
Se le pedirá que confirme la eliminación de la pila. | Desarrollador de aplicaciones |
Resolución de problemas
| Problema | Solución |
|---|---|
No se recibió ningún evento en la cuenta de destino. |
|
Al invocar una función de Lambda desde la consola, se obtiene el siguiente error:
| Póngase en contacto con su Cuenta de AWS administrador para recibir los permisos de |
Recursos relacionados
Referencias
Tutoriales y videos
Información adicional
Regla del productor
En la cuenta Source, se crea un bus de EventBridge eventos para aceptar los mensajes de los productores (como se muestra en la sección Arquitectura). En este bus de eventos se crea una regla con los correspondientes permisos de IAM. Las reglas se dirigen al bus de EventBridge eventos de la cuenta de destino y se basan en la siguiente cdk.json estructura:
"rules": [ { "id": "CrossAccount", "sources": ["Producer"], "detail_types": ["TestType"], "targets": [ { "id": "ConsumerEventBus", "arn": "arn:aws:events:us-east-2:012345678901:event-bus/CrossAccount" } ] } ]
Para cada bus de eventos que consume, se deben incluir el patrón de eventos y el bus de eventos de destino.
Patrón de eventos
Los patrones de eventos filtran a qué eventos se aplicará esta regla. Para los fines de este ejemplo, los orígenes de eventos y el registro detail_types identifican qué eventos se van a transmitir desde el bus de eventos de la cuenta de origen al bus de eventos de la cuenta de destino.
Bus de eventos de destino
Esta regla se dirige a un bus de eventos que existe en otra cuenta. El arn (nombre del recurso de Amazon) completo es necesario para identificar de forma única el bus de eventos de destino y id es el ID lógico utilizado por AWS CloudFormation. No es necesario que el bus de eventos de destino exista realmente en el momento de la creación de la regla de destino.
Consideraciones específicas de la cuenta de destino
En la cuenta de destino, se crea un bus de EventBridge eventos para recibir mensajes del bus de eventos de la cuenta de origen. Para permitir que los eventos se publiquen desde la cuenta de origen, debe crear una política basada en recursos:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowOrgToPutEvents", "Effect": "Allow", "Principal": "*", "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-2:012345678901:event-bus/CrossAccount", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-XXXXXXXXX" } } }] }
Es especialmente importante conceder el permiso events:PutEvents, que permite a cualquier otra cuenta de la misma organización publicar eventos en este bus de eventos. Si aws:PrincipalOrgId se establece como ID de la organización, se conceden los permisos necesarios.
Patrón del evento
Puede modificar el patrón de eventos incluido para adaptarlo a su caso de uso:
rule = events.Rule( self, self.id + 'Rule' + rule_definition['id'], event_bus=event_bus, event_pattern=events.EventPattern( source=rule_definition['sources'], detail_type=rule_definition['detail_types'], ) )
Para reducir el procesamiento innecesario, el patrón de eventos debe especificar que solo los eventos que procese la cuenta de destino se transmitan al bus de eventos de la cuenta de destino.
Política basada en recursos
En este ejemplo, se utiliza el ID de la organización para controlar qué cuentas pueden incluir eventos en el bus de eventos de la cuenta de destino. Considere la posibilidad de utilizar una política más restrictiva, como especificar la cuenta de origen.
EventBridge cuotas
Tenga en cuenta las siguientes cuotas:
La cuota predeterminada es de 300 reglas por bus de eventos. Se puede ampliar si es necesario, pero debería adaptarse a la mayoría de los casos de uso.
El máximo permitido es de cinco destinos por regla. Recomendamos que los arquitectos de aplicaciones utilicen una regla distinta para cada cuenta de destino a fin de poder controlar de forma pormenorizada el patrón de eventos.