As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Crie uma EventBridge conexão entre contas da Amazon em uma organização
Sam Wilson e Robert Stone, Amazon Web Services
Resumo
Grandes sistemas distribuídos usam EventBridge a Amazon para comunicar mudanças de estado entre várias contas da Amazon Web Services (AWS) em uma AWS Organizations organização. No entanto, geralmente EventBridge é capaz de atingir apenas endpoints ou consumidores no mesmo Conta da AWS. A exceção consiste em um barramento de eventos em outra conta. Esse barramento de eventos é um destino válido. Para que eventos de um barramento de eventos em outra conta possam ser consumidos, esses eventos devem ser enviados do barramento de eventos da conta de origem para o barramento de eventos da conta de destino. Para evitar desafios ao gerenciar eventos críticos em aplicativos diferentes Contas da AWS, use a abordagem recomendada apresentada nesse padrão.
Esse padrão ilustra como implementar uma arquitetura orientada a eventos EventBridge que envolva vários Contas da AWS em uma organização. AWS Organizations O padrão usa o AWS Cloud Development Kit (AWS CDK) Toolkit e. AWS CloudFormation
EventBridge oferece um barramento de eventos sem servidor que ajuda você a receber, filtrar, transformar, rotear e entregar eventos. Um componente essencial das arquiteturas orientadas por eventos, EventBridge suporta a separação entre produtores de mensagens e consumidores dessas mensagens. Em uma única conta, isso é simples. Uma estrutura com várias contas requer considerações adicionais para que eventos no barramento de eventos de uma conta possam ser consumidos por outras contas na mesma organização.
Para obter informações sobre considerações específicas de conta para produtores e consumidores, consulte a seção Informações adicionais.
Pré-requisitos e limitações
Pré-requisitos
Uma AWS Organizations organização com pelo menos dois associados Contas da AWS
Uma função AWS Identity and Access Management (IAM) em ambos Contas da AWS que permite provisionar infraestrutura em ambos Contas da AWS usando AWS CloudFormation
O Git instalado localmente
AWS Command Line Interface (AWS CLI) instalado localmente
AWS CDK instalado localmente e inicializado em ambos Contas da AWS
Versões do produto
O desenvolvimento e os testes deste padrão foram realizados com as seguintes ferramentas e versões:
AWS CDK Kit de ferramentas 2.126.0
Node.js 18.19.0
npm 10.2.3
Python 3.12
Esse padrão deve funcionar com qualquer versão da AWS CDK v2 ou npm. As versões do Node.js de 13.0.0 a 13.6.0 não são compatíveis com o AWS CDK.
Arquitetura
Arquitetura de destino
O diagrama apresentado a seguir ilustra o fluxo de trabalho da arquitetura para enviar um evento de uma conta e consumi-lo em outra conta.

O fluxo de trabalho contém as seguintes etapas:
A AWS Lambda função Producer na conta Source coloca um evento no barramento de EventBridge eventos da conta.
A EventBridge regra entre contas encaminha o evento para um barramento de EventBridge eventos na conta de destino.
O barramento de EventBridge eventos na conta de destino tem uma regra Lambda de destino que invoca a função Consumer Lambda.
Uma prática recomendada é empregar uma fila de mensagens não entregues (DLQ, na sigla em inglês) para gerenciar falhas nas invocações da função do Lambda com papel de consumidora. No entanto, a DLQ foi omitida desta solução para facilitar a compreensão. Para saber mais sobre como implementar uma DLQ em seus fluxos de trabalho e melhorar a capacidade de recuperação de falhas, consulte a postagem do blog Implementando padrões de tratamento de AWS Lambda erros
Automação e escala
AWS CDK provisiona automaticamente a arquitetura necessária. EventBridge pode escalar para milhares de registros por segundo, dependendo do Região da AWS. Para obter mais informações, consulte a documentação de EventBridge cotas da Amazon.
Ferramentas
Serviços da AWS
AWS Cloud Development Kit (AWS CDK)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código. Esse padrão usa o AWS CDK Toolkit, um kit de desenvolvimento em nuvem de linha de comando que ajuda você a interagir com seu AWS CDK aplicativo.
EventBridgeA Amazon é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
AWS Organizationsé um serviço de gerenciamento de contas que ajuda você a consolidar várias Contas da AWS em uma organização que você cria e gerencia centralmente.
Outras ferramentas
O Node.js
é um ambiente de tempo de JavaScript execução orientado a eventos projetado para criar aplicativos de rede escaláveis. O npm
é um registro de software executado em um ambiente Node.js e usado para compartilhar ou emprestar pacotes e gerenciar a implantação de pacotes privados. Python
é uma linguagem de programação de computador de uso geral.
Repositório de código
O código desse padrão está disponível no repositório GitHub cross-account-eventbridge-in-organization
Práticas recomendadas
Para conhecer as melhores práticas ao trabalhar com EventBridge, consulte os seguintes recursos:
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Configure as credenciais locais para a conta de origem e para a conta de destino. | Consulte Setting up new configuration and credentials e escolha o método de autenticação e de credencial mais adequado ao seu ambiente. ImportanteCertifique-se de configurar a autenticação da conta AWS CLI de origem e da conta de destino. Estas instruções partem do pressuposto de que você já configurou dois perfis da AWS localmente: | Desenvolvedor de aplicativos |
Inicialize os dois Contas da AWS. | Para inicializar as contas, execute os seguintes comandos:
| Desenvolvedor de aplicativos |
Clone o código do padrão. | Para clonar o repositório, execute o seguinte comando:
Em seguida, altere o diretório para a pasta do projeto recém-clonada:
| Desenvolvedor de aplicativos |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Modifique | Na pasta raiz do projeto, realize as seguintes alterações em
| Desenvolvedor de aplicativos |
Implante os ProducerStack recursos. | Execute o seguinte comando usando o diretório raiz do projeto:
Quando solicitado, aceite as novas funções do IAM e outras permissões relacionadas à segurança criadas por meio de. AWS CloudFormation | Desenvolvedor de aplicativos |
Verifique se os ProducerStack recursos estão implantados. | Para verificar os recursos, faça o seguinte:
| Desenvolvedor de aplicativos |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Implante os ConsumerStack recursos. | Execute o seguinte comando usando o diretório raiz do projeto:
Quando solicitado, aceite as novas funções do IAM e outras permissões relacionadas à segurança criadas por meio de. CloudFormation | Desenvolvedor de aplicativos |
Verifique se os ConsumerStack recursos estão implantados |
| Desenvolvedor de aplicativos |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Invoque a função do Lambda com perfil de produtora. |
| Desenvolvedor de aplicativos |
Verifique se o evento foi recebido. |
| Desenvolvedor de aplicativos |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Destrua os ConsumerStack recursos. | Se você estiver usando este padrão como teste, limpe os recursos implantados para evitar custos adicionais. Execute o seguinte comando usando o diretório raiz do projeto:
Você receberá uma solicitação para confirmar a exclusão da pilha. | Desenvolvedor de aplicativos |
Destrua os ProducerStack recursos. | Execute o seguinte comando usando o diretório raiz do projeto:
Você receberá uma solicitação para confirmar a exclusão da pilha. | Desenvolvedor de aplicativos |
Solução de problemas
| Problema | Solução |
|---|---|
Nenhum evento foi recebido na conta de destino. |
|
A invocação de uma função do Lambda usando o console retorna o seguinte erro:
| Entre em contato com seu Conta da AWS administrador para receber as permissões de |
Recursos relacionados
Referências
Tutoriais e vídeos
Mais informações
Regra do produtor
Na conta Source, um barramento de EventBridge eventos é criado para aceitar mensagens dos produtores (conforme mostrado na seção Arquitetura). Uma regra, juntamente com as permissões do IAM correspondentes, é criada nesse barramento de eventos. As regras têm como alvo o barramento de EventBridge eventos na conta de destino com base na seguinte cdk.json estrutura:
"rules": [ { "id": "CrossAccount", "sources": ["Producer"], "detail_types": ["TestType"], "targets": [ { "id": "ConsumerEventBus", "arn": "arn:aws:events:us-east-2:012345678901:event-bus/CrossAccount" } ] } ]
Para cada barramento de eventos consumidor, o padrão de eventos e o barramento de eventos de destino devem ser incluídos.
Padrão de evento
Os padrões de eventos filtram a quais eventos esta regra se aplicará. Para as finalidades deste exemplo, as origens de eventos e os detail_types dos registros identificam quais eventos serão transmitidos do barramento de eventos da conta de origem para o barramento de eventos da conta de destino.
Barramento de eventos de destino
Esta regra é destinada a um barramento de eventos que existe em outra conta. É necessário fornecer o arn (nome do recurso da Amazon) completo para identificar de forma exclusiva o barramento de eventos de destino, e o id é o identificador lógico usado pelo AWS CloudFormation. O barramento de eventos de destino não precisa existir de fato no momento da criação da regra de destino.
Considerações específicas sobre a conta de destino
Na conta de destino, um barramento de EventBridge eventos é criado para receber mensagens do barramento de eventos da conta de origem. Para permitir que os eventos sejam publicados usando a conta de origem, é necessário criar uma política baseada em 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" } } }] }
Conceder a permissão events:PutEvents é particularmente importante, pois ela autoriza qualquer conta da mesma organização a publicar eventos para este barramento de eventos. Ao definir aws:PrincipalOrgId como o ID da organização, as permissões necessárias são garantidas.
Padrão de evento
Você pode modificar o padrão de eventos fornecido conforme as necessidades do seu 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'], ) )
A fim de evitar processamento desnecessário, o padrão de eventos deve especificar que somente os eventos a serem processados pela conta de destino sejam transmitidos para o barramento de eventos da conta de destino.
Política baseada em recursos
Este exemplo usa o ID da organização para controlar quais contas têm permissão para enviar eventos para o barramento de eventos da conta de destino. Considere usar uma política mais restritiva, como especificar a conta de origem.
EventBridge cotas
Considere as seguintes cotas:
O limite de cotas padrão é de 300 regras por barramento de eventos. Esse número pode ser expandido, se necessário, mas atende à maioria dos casos de uso.
Cinco destinos, por regra, é o máximo permitido. Recomendamos que os arquitetos de aplicações empreguem uma regra distinta para cada conta de destino, a fim de permitir um controle mais detalhado sobre o padrão de eventos.