Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Crie uma EventBridge conexão entre contas da Amazon em uma organização - Recomendações da AWS

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

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

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 processo de três etapas para conectar a conta do produtor de origem e a conta do consumidor de destino.

O fluxo de trabalho contém as seguintes etapas:

  1. A AWS Lambda função Producer na conta Source coloca um evento no barramento de EventBridge eventos da conta.

  2. A EventBridge regra entre contas encaminha o evento para um barramento de EventBridge eventos na conta de destino.

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

TarefaDescriçãoHabilidades 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.

Importante

Certifique-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: sourceAccount destinationAccount e.

Desenvolvedor de aplicativos

Inicialize os dois Contas da AWS.

Para inicializar as contas, execute os seguintes comandos:

cdk bootstrap --profile sourceAccount cdk bootstrap --profile destinationAccount
Desenvolvedor de aplicativos

Clone o código do padrão.

Para clonar o repositório, execute o seguinte comando:

git clone git@github.com:aws-samples/aws-cdk-examples.git

Em seguida, altere o diretório para a pasta do projeto recém-clonado:

cd aws-cdk-examples/python/cross-account-eventbridge-in-organization
Desenvolvedor de aplicativos

Prepare seu ambiente AWS CDK de implantação local

TarefaDescriçãoHabilidades 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.

Importante

Certifique-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: sourceAccount destinationAccount e.

Desenvolvedor de aplicativos

Inicialize os dois Contas da AWS.

Para inicializar as contas, execute os seguintes comandos:

cdk bootstrap --profile sourceAccount cdk bootstrap --profile destinationAccount
Desenvolvedor de aplicativos

Clone o código do padrão.

Para clonar o repositório, execute o seguinte comando:

git clone git@github.com:aws-samples/aws-cdk-examples.git

Em seguida, altere o diretório para a pasta do projeto recém-clonado:

cd aws-cdk-examples/python/cross-account-eventbridge-in-organization
Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Modifique cdk.json com seus detalhes AWS Organizations e da conta.

Na pasta raiz do projeto, faça as seguintes alterações emcdk.json:

  • organization_id‒ O ID da organização das contas envolvidas em sua implantação

  • event_bus_nameCrossAccount, ou você pode renomeá-lo

  • rules[].targets[].arn‒ O Conta da AWS ID da conta consumidora (conta de destino)

Desenvolvedor de aplicativos

Implante os ProducerStack recursos.

Execute o comando a seguir no diretório raiz do projeto:

cdk deploy ProducerStack --profile sourceAccount

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:

  1. Em AWS Management Console Para a conta Source, escolha CloudFormation.

  2. Na lista de pilhas, escolha ProducerStack.

  3. Na guia Informações da pilha, verifique se o status da pilha é. CREATE_COMPLETE Opcionalmente, na guia Recursos, revise os recursos configurados.

Desenvolvedor de aplicativos

Implante ProducerStack na conta de origem

TarefaDescriçãoHabilidades necessárias

Modifique cdk.json com seus detalhes AWS Organizations e da conta.

Na pasta raiz do projeto, faça as seguintes alterações emcdk.json:

  • organization_id‒ O ID da organização das contas envolvidas em sua implantação

  • event_bus_nameCrossAccount, ou você pode renomeá-lo

  • rules[].targets[].arn‒ O Conta da AWS ID da conta consumidora (conta de destino)

Desenvolvedor de aplicativos

Implante os ProducerStack recursos.

Execute o comando a seguir no diretório raiz do projeto:

cdk deploy ProducerStack --profile sourceAccount

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:

  1. Em AWS Management Console Para a conta Source, escolha CloudFormation.

  2. Na lista de pilhas, escolha ProducerStack.

  3. Na guia Informações da pilha, verifique se o status da pilha é. CREATE_COMPLETE Opcionalmente, na guia Recursos, revise os recursos configurados.

Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Implante os ConsumerStack recursos.

Execute o comando a seguir no diretório raiz do projeto:

cdk deploy ConsumerStack --profile destinationAccount

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

  1. No console da conta de destino, escolha CloudFormation.

  2. Na lista de pilhas, escolha ConsumerStack.

  3. Na guia Informações da pilha, verifique se o status da pilha é. CREATE_COMPLETE Opcionalmente, na guia Recursos, revise os recursos configurados.

Desenvolvedor de aplicativos

ConsumerStack Implantar na conta de destino

TarefaDescriçãoHabilidades necessárias

Implante os ConsumerStack recursos.

Execute o comando a seguir no diretório raiz do projeto:

cdk deploy ConsumerStack --profile destinationAccount

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

  1. No console da conta de destino, escolha CloudFormation.

  2. Na lista de pilhas, escolha ConsumerStack.

  3. Na guia Informações da pilha, verifique se o status da pilha é. CREATE_COMPLETE Opcionalmente, na guia Recursos, revise os recursos configurados.

Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Invoque a função Producer Lambda.

  1. No console da conta Source, escolha Lambda.

  2. Na lista de funções, escolha ProducerStack- ProducerLambda XXXX (XXXX representa uma sequência de caracteres gerada automaticamente pelo AWS CDK).

  3. Selecione a guia Testar.

  4. Na seção Evento de teste, escolha Teste.

    O conteúdo da área de texto Event JSON pode ser qualquer JSON válido fornecido à função Lambda como carga útil. Nesse caso, o JSON padrão fornecido é suficiente.

  5. Verifique se a mensagem Executando função: bem-sucedida aparece em um banner verde acima da seção Evento de teste.

Desenvolvedor de aplicativos

Verifique se o evento foi recebido.

  1. No console da conta de destino, escolha Lambda.

  2. Na lista de funções, escolha ConsumerStack- ConsumerLambda XXXX (XXXX representa uma sequência de caracteres gerada automaticamente pelo AWS CDK).

  3. Escolha a guia Monitor (Monitorar).

  4. Na seção Monitor, escolha Exibir CloudWatch registros.

  5. Na guia recém-aberta, escolha o nome do fluxo de log do fluxo de log mais recente.

  6. Verifique se uma instrução de log, como a seguinte, aparece:

    [DEBUG]    2024-04-08T19:08:10.091Z    9c16844a-f9de-444d-b621-86afe64d4cc8    Event: {'version':'0', 'id':'0b9faa96-973f-8be2-ecf8-75e4f328b980', 'detail-type':'TestType', 'source':'Producer', 'account':'XXXXXXXXXXXX', 'time':'2024-04-08T19:08:09Z', 'region':'us-east-1', 'resources': [], 'detail': {'key1':'value1', 'key2':'value2', 'key3':'value3'}}

Desenvolvedor de aplicativos

Produza e consuma eventos

TarefaDescriçãoHabilidades necessárias

Invoque a função Producer Lambda.

  1. No console da conta Source, escolha Lambda.

  2. Na lista de funções, escolha ProducerStack- ProducerLambda XXXX (XXXX representa uma sequência de caracteres gerada automaticamente pelo AWS CDK).

  3. Selecione a guia Testar.

  4. Na seção Evento de teste, escolha Teste.

    O conteúdo da área de texto Event JSON pode ser qualquer JSON válido fornecido à função Lambda como carga útil. Nesse caso, o JSON padrão fornecido é suficiente.

  5. Verifique se a mensagem Executando função: bem-sucedida aparece em um banner verde acima da seção Evento de teste.

Desenvolvedor de aplicativos

Verifique se o evento foi recebido.

  1. No console da conta de destino, escolha Lambda.

  2. Na lista de funções, escolha ConsumerStack- ConsumerLambda XXXX (XXXX representa uma sequência de caracteres gerada automaticamente pelo AWS CDK).

  3. Escolha a guia Monitor (Monitorar).

  4. Na seção Monitor, escolha Exibir CloudWatch registros.

  5. Na guia recém-aberta, escolha o nome do fluxo de log do fluxo de log mais recente.

  6. Verifique se uma instrução de log, como a seguinte, aparece:

    [DEBUG]    2024-04-08T19:08:10.091Z    9c16844a-f9de-444d-b621-86afe64d4cc8    Event: {'version':'0', 'id':'0b9faa96-973f-8be2-ecf8-75e4f328b980', 'detail-type':'TestType', 'source':'Producer', 'account':'XXXXXXXXXXXX', 'time':'2024-04-08T19:08:09Z', 'region':'us-east-1', 'resources': [], 'detail': {'key1':'value1', 'key2':'value2', 'key3':'value3'}}

Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades 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:

cdk destroy ConsumerStack --profile destinationAccount

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:

cdk destroy ProducerStack --profile sourceAccount

Você será solicitado a confirmar a exclusão da pilha.

Desenvolvedor de aplicativos

Limpeza

TarefaDescriçãoHabilidades 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:

cdk destroy ConsumerStack --profile destinationAccount

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:

cdk destroy ProducerStack --profile sourceAccount

Você será solicitado a confirmar a exclusão da pilha.

Desenvolvedor de aplicativos

Solução de problemas

ProblemaSolução

Nenhum evento foi recebido na conta de destino.

  1. Verifique se o ID do Organizations fornecido está correto.

  2. Verifique se a conta de origem faz parte da organização fornecida.

  3. Verifique se as regras do barramento de eventos na conta de origem estão mapeadas para as informações corretas na conta de destino.

A invocação de uma função Lambda a partir do console retorna o seguinte erro:

User: arn:aws:iam::123456789012:user/XXXXX is not authorized to perform: lambda:Invoke

Entre em contato com seu Conta da AWS administrador para receber as permissões de lambda:Invoke ação apropriadas na função ProducerStack-ProducerLambdaXXXX Lambda.

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.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.