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
Criado por Sam Wilson (AWS) e Robert Stone (AWS)
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 é um ônibus de eventos em uma conta diferente. Esse barramento de eventos é um alvo válido. Para consumir eventos de um barramento de eventos em outra conta, os 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 oferece suporte à separação entre produtores de mensagens e consumidores dessas mensagens. Em uma única conta, isso é simples. Uma estrutura de várias contas exige considerações adicionais para que eventos no barramento de eventos em uma conta sejam consumidos em outras contas dentro da mesma organização.
Para obter informações sobre considerações específicas da 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
AWS Command Line Interface (AWS CLI) instalado localmente
AWS CDK instalado localmente e inicializado em ambos Contas da AWS
Versões do produto
Esse padrão foi criado e testado usando 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 13.0.0 a 13.6.0 do Node.js não são compatíveis com o. AWS CDK
Arquitetura
Arquitetura de destino
O diagrama a seguir mostra 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 é usar uma Dead Letter Queue (DLQ) para lidar com invocações com falha da função Consumer Lambda. No entanto, o DLQ foi omitido dessa solução para maior clareza. 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 | Descrição | Habilidades necessárias |
---|---|---|
Configure as credenciais locais para a conta de origem e a conta de destino. | Consulte Configurar novas configurações e credenciais e use o método de autenticação e credencial que faz mais sentido para seu ambiente. ImportanteCertifique-se de configurar a autenticação da conta AWS CLI de origem e da conta de destino. Essas instruções pressupõem que você tenha configurado 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-clonado:
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Modifique | Na pasta raiz do projeto, faça as seguintes alterações em
| Desenvolvedor de aplicativos |
Implante os ProducerStack recursos. | Execute o comando a seguir no 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 | Descrição | Habilidades necessárias |
---|---|---|
Implante os ConsumerStack recursos. | Execute o comando a seguir no 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 ConsumerStack recursos estão implantados |
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Invoque a função Producer Lambda. |
| Desenvolvedor de aplicativos |
Verifique se o evento foi recebido. |
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Destrua os ConsumerStack recursos. | Se você estiver usando esse padrão como teste, limpe os recursos implantados para evitar custos adicionais. Execute o comando a seguir no diretório raiz do projeto:
Você será solicitado a confirmar a exclusão da pilha. | Desenvolvedor de aplicativos |
Destrua os ProducerStack recursos. | Execute o comando a seguir no diretório raiz do projeto:
Você será solicitado a 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 Lambda a partir do 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 com as permissões do IAM associadas é 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 evento consumidor, o padrão do evento e o barramento do evento de destino devem ser incluídos.
Padrão de evento
Os padrões de eventos filtram a quais eventos essa regra se aplicará. Para fins deste exemplo, as fontes de eventos e o registro detail_types
identificam quais eventos devem ser transmitidos do barramento de eventos da conta de origem para o barramento de eventos da conta de destino.
Ônibus do evento alvo
Essa regra tem como alvo um barramento de eventos que existe em outra conta. O nome completo arn
(Amazon Resource Name) é necessário para identificar de forma exclusiva o barramento do evento de destino e id
é o ID lógico usado por. AWS CloudFormation O barramento de eventos de destino não precisa realmente existir no momento da criação da regra de destino.
Considerações específicas da 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 a partir da conta Source, você deve 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"
}
}
}]
}
É especialmente importante conceder a events:PutEvents
permissão, que permite que qualquer outra conta na mesma organização publique eventos nesse barramento de eventos. A configuração aws:PrincipalOrgId
como ID da organização concede as permissões necessárias.
Padrão de evento
Você pode modificar o padrão de evento incluído para atender ao 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'],
)
)
Para reduzir o 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 colocar eventos no barramento de eventos da conta de destino. Considere usar uma política mais restritiva, como especificar a conta de origem.
EventBridge cotas
Lembre-se das seguintes cotas:
300 regras por barramento de eventos é a cota padrão. Isso pode ser expandido se necessário, mas deve se adequar à maioria dos casos de uso.
Cinco alvos por regra é o máximo permitido. Recomendamos que os arquitetos de aplicativos usem uma regra distinta para cada conta de destino para oferecer suporte a um controle refinado sobre o padrão do evento.