Primeiros passos: Crie uma regra de barramento de EventBridge eventos da Amazon - Amazon EventBridge

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

Primeiros passos: Crie uma regra de barramento de EventBridge eventos da Amazon

Para nos familiarizarmos com EventBridge as regras e seus recursos, usaremos um AWS CloudFormation modelo para configurar uma regra de barramento de eventos e os componentes associados, incluindo a origem, o padrão e o destino do evento. Depois, podemos explorar como as regras funcionam para selecionar os eventos que você deseja.

O modelo cria uma regra no barramento de eventos padrão. Essa regra usa um padrão de evento para filtrar eventos de um bucket específico do Amazon S3. A regra envia eventos correspondentes para o destino especificado, um tópico do Amazon SNS. Sempre que um objeto é criado no bucket, a regra envia uma notificação para o tópico, que então envia um e-mail para o endereço de e-mail especificado.

Os recursos implantados consistem em:

  • Um bucket do Amazon S3 com EventBridge notificações habilitadas para atuar como a fonte do evento.

  • Um tópico do Amazon SNS e uma assinatura de e-mail como destino para notificações.

  • Uma função de execução que EventBridge concede as permissões necessárias para publicar no tópico do Amazon SNS.

  • A regra em si, que:

    • Define um padrão de evento que corresponde somente Object Created aos eventos do bucket específico do Amazon S3.

    • Especifica o tópico do Amazon SNS como um destino para o EventBridge qual entrega eventos correspondentes.

Para obter detalhes técnicos específicos do modelo, consulteDetalhes do modelo.

Os eventos do Amazon S3 são combinados com o padrão de eventos da regra e enviados para um tópico do SNS, se corresponderem.

Antes de começar

Para receber eventos do Amazon S3 EventBridge, você deve habilitar EventBridge dentro do Amazon S3. Este tópico pressupõe que EventBridge esteja habilitado. Para obter mais informações, consulte Ativação EventBridge no Guia do usuário do Amazon S3.

Criando a regra usando CloudFormation

Para criar a regra e seus recursos associados, criaremos um CloudFormation modelo e o usaremos para criar uma pilha contendo um exemplo de regra, completo com origem e destino.

Importante

Você será cobrado pelos recursos da Amazon usados se criar uma pilha a partir desse modelo.

Primeiro, crie o CloudFormation modelo.

  1. Na Modelo seção, clique no ícone de cópia na guia JSON ou YAML para copiar o conteúdo do modelo.

  2. Cole o conteúdo do modelo em um novo arquivo.

  3. Salve o arquivo localmente.

Em seguida, use o modelo que você salvou para provisionar uma CloudFormation pilha.

Crie a pilha usando CloudFormation (console)
  1. Abra o CloudFormation console em https://console.aws.amazon.com/cloudformation/.

  2. Na página Pilhas, no menu Criar pilha, escolha com novos recursos (padrão).

  3. Especifique o modelo:

    1. Em Pré-requisito, escolha Escolher um modelo existente.

    2. Em Especificar modelo, escolha Fazer upload de um arquivo de modelo.

    3. Escolha Escolher arquivo, navegue até o arquivo de modelo e escolha-o.

    4. Escolha Próximo.

  4. Especifique os detalhes da pilha:

    1. Insira o nome da pilha.

    2. Para parâmetros, aceite os valores padrão para BucketName, SNSTopicDisplayName, SNSTopicNome e RuleName, ou insira seus próprios valores.

    3. Para EmailAddress, insira um endereço de e-mail válido no qual você deseja receber notificações.

    4. Escolha Próximo.

  5. Configure as opções da pilha:

    1. Em Opções de falha de pilha, escolha Excluir todos os recursos recém-criados.

      nota

      A escolha dessa opção evita que você seja cobrado por recursos cuja política de exclusão especifica que eles sejam retidos mesmo que a criação da pilha falhe. Para obter mais informações, consulte o DeletionPolicyatributo no Guia CloudFormation do usuário.

    2. Aceite todos os outros valores padrão.

    3. Em Capacidades, marque a caixa para reconhecer que isso CloudFormation pode criar recursos do IAM em sua conta.

    4. Escolha Próximo.

  6. Revise os detalhes da pilha e escolha Enviar.

Crie a pilha usando CloudFormation ()AWS CLI

Você também pode usar o AWS CLI para criar a pilha.

  • Use o comando create-stack.

    • Aceite os valores padrão dos parâmetros do modelo, especificando o nome da pilha e seu endereço de e-mail. Use o template-body parâmetro para passar o conteúdo do modelo ou template-url para especificar um local de URL.

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ --template-body template-contents \ --parameters ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ --capabilities CAPABILITY_IAM
    • Substitua o (s) valor (es) padrão de um ou mais parâmetros do modelo. Por exemplo:

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ ----template-body template-contents \ --parameters \ ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ ParameterKey=BucketName,ParameterValue=my-custom-bucket-name \ ParameterKey=RuleName,ParameterValue=my-custom-rule-name \ --capabilities CAPABILITY_IAM

CloudFormation cria a pilha. Quando a criação da pilha estiver concluída, os recursos da pilha estarão prontos para uso. Você pode usar a guia Recursos na página de detalhes da pilha para visualizar os recursos que foram provisionados em sua conta.

Depois que a pilha for criada, você receberá um e-mail de confirmação da assinatura no endereço fornecido. Você deve confirmar essa assinatura para receber notificações.

Explorando os recursos das regras

Depois que a regra for criada, você poderá usar o EventBridge console para observar a operação da regra e testar a entrega do evento.

  1. Abra o EventBridge console em https://console.aws.amazon.com/events/casa? #/regras.

  2. Escolha a regra que você criou.

    Na página de detalhes da regra, a seção Detalhes da regra exibe informações sobre a regra, incluindo seu padrão de eventos e alvos.

Examinando o padrão do evento

Antes de testarmos a operação da regra, vamos examinar o padrão de eventos que especificamos para controlar quais eventos são enviados para o destino. A regra enviará somente eventos que correspondam aos critérios do padrão para o alvo. Nesse caso, queremos apenas o evento que o Amazon S3 gera quando um objeto é criado em nosso bucket específico.

  • Na página de detalhes da regra, em Padrão de evento, você pode ver que o padrão de evento seleciona somente eventos em que:

    • A fonte é o serviço Amazon S3 () aws.s3

    • O tipo de detalhe é Object Created

    • O nome do bucket corresponde ao nome do bucket que criamos

    { "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "bucket": { "name": ["eventbridge-rule-example-source"] } } }

Envio de eventos por meio da regra

Em seguida, geraremos eventos na fonte do evento para testar se a correspondência e a entrega das regras estão funcionando corretamente. Para fazer isso, enviaremos um objeto para o bucket do S3 que especificamos como a fonte do evento.

  1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Na lista Buckets, escolha o bucket que você criou com o modelo (nome padrão:eventbridge-rule-example-source).

  3. Escolha Carregar.

  4. Faça upload de um arquivo de teste para gerar um Object Created evento:

    1. Escolha Adicionar arquivos e selecione um arquivo do seu computador.

    2. Escolha Carregar.

  5. Aguarde alguns instantes até que o evento seja processado EventBridge e a notificação seja enviada.

  6. Verifique seu e-mail para ver se há uma notificação sobre o evento de criação do objeto. O e-mail conterá detalhes sobre o evento do S3, incluindo o nome do bucket e a chave do objeto.

Visualizando métricas de regras

Você pode visualizar as métricas da sua regra para confirmar se os eventos estão sendo processados corretamente.

  1. No EventBridge console, escolha sua regra.

  2. Escolha a guia Métricas.

  3. Você pode visualizar métricas como:

    • Invocações: o número de vezes que a regra foi acionada.

    • TriggeredRules: o número de regras que foram acionadas por eventos correspondentes.

Limpeza: excluindo recursos

Como etapa final, excluiremos a pilha e os recursos que ela contém.

Importante

Você será cobrado pelos recursos da Amazon contidos na pilha enquanto ela existir.

  1. Abra o CloudFormation console em https://console.aws.amazon.com/cloudformation/.

  2. Na página Pilhas, escolha a pilha criada a partir do modelo, escolha Excluir e confirme Excluir.

    CloudFormation inicia a exclusão da pilha e de todos os recursos que ela inclui.

CloudFormation detalhes do modelo

Esse modelo cria recursos e concede permissões em sua conta.

Recursos

O CloudFormation modelo deste tutorial criará os seguintes recursos em sua conta:

Importante

Você será cobrado pelos recursos da Amazon usados se criar uma pilha a partir desse modelo.

  • AWS::S3::Bucket: Um bucket do Amazon S3 que atua como a fonte do evento para a regra, com as EventBridge notificações ativadas.

  • AWS::SNS::Topic: um tópico do Amazon SNS que atua como destino para os eventos correspondentes à regra.

  • AWS::SNS::Subscription: Uma assinatura de e-mail para o tópico do SNS.

  • AWS::IAM::Role: uma função de execução do IAM que concede permissões ao EventBridge serviço em sua conta.

  • AWS::Events::Rule: A regra que conecta os eventos do bucket do Amazon S3 ao tópico do Amazon SNS.

Permissões

O modelo inclui um AWS::IAM::Role recurso que representa uma função de execução. Essa função concede ao EventBridge serviço (events.amazonaws.com) as seguintes permissões em sua conta.

As seguintes permissões são concedidas por meio da política gerenciadaAmazonSNSFullAccess:

  • Acesso total aos recursos e operações do Amazon SNS

CloudFormation modelo

Salve o código YAML a seguir como um arquivo separado para usar como CloudFormation modelo para este tutorial.

YAML
AWSTemplateFormatVersion: '2010-09-09' Description: '[AWSDocs] EventBridge: event-bus-rule-get-started' Parameters: BucketName: Type: String Description: Name of the S3 bucket Default: eventbridge-rule-example-source SNSTopicDisplayName: Type: String Description: Display name for the SNS topic Default: eventbridge-rule-example-target SNSTopicName: Type: String Description: Name for the SNS topic Default: eventbridge-rule-example-target RuleName: Type: String Description: Name for the EventBridge rule Default: eventbridge-rule-example EmailAddress: Type: String Description: Email address to receive notifications AllowedPattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$' Resources: # S3 Bucket with notifications enabled S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketName NotificationConfiguration: EventBridgeConfiguration: EventBridgeEnabled: true # SNS Topic for email notifications SNSTopic: Type: AWS::SNS::Topic Properties: DisplayName: !Ref SNSTopicDisplayName TopicName: !Ref SNSTopicName # SNS Subscription for email SNSSubscription: Type: AWS::SNS::Subscription Properties: Protocol: email Endpoint: !Ref EmailAddress TopicArn: !Ref SNSTopic # EventBridge Rule to match S3 object creation events and send them to the SNS topic EventBridgeRule: Type: AWS::Events::Rule Properties: Name: !Ref RuleName Description: "Rule to detect S3 object creation and send email notification" EventPattern: source: - aws.s3 detail-type: - "Object Created" detail: bucket: name: - !Ref BucketName State: ENABLED Targets: - Id: SendToSNS Arn: !Ref SNSTopic RoleArn: !GetAtt EventBridgeRole.Arn # IAM Role for EventBridge to publish to SNS EventBridgeRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: events.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonSNSFullAccess Outputs: BucketName: Description: Name of the S3 bucket Value: !Ref S3Bucket SNSTopicARN: Description: ARN of the SNS topic Value: !Ref SNSTopic EmailSubscription: Description: Email address for notifications Value: !Ref EmailAddress
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "[AWSDocs] EventBridge: event-bus-rule-get-started", "Parameters": { "BucketName": { "Type": "String", "Description": "Name of the S3 bucket", "Default": "eventbridge-rule-example-source" }, "SNSTopicDisplayName": { "Type": "String", "Description": "Display name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "SNSTopicName": { "Type": "String", "Description": "Name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "RuleName": { "Type": "String", "Description": "Name for the EventBridge rule", "Default": "eventbridge-rule-example" }, "EmailAddress": { "Type": "String", "Description": "Email address to receive notifications", "AllowedPattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$" } }, "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": { "Ref": "BucketName" }, "NotificationConfiguration": { "EventBridgeConfiguration": { "EventBridgeEnabled": true } } } }, "SNSTopic": { "Type": "AWS::SNS::Topic", "Properties": { "DisplayName": { "Ref": "SNSTopicDisplayName" }, "TopicName": { "Ref": "SNSTopicName" } } }, "SNSSubscription": { "Type": "AWS::SNS::Subscription", "Properties": { "Protocol": "email", "Endpoint": { "Ref": "EmailAddress" }, "TopicArn": { "Ref": "SNSTopic" } } }, "EventBridgeRule": { "Type": "AWS::Events::Rule", "Properties": { "Name": { "Ref": "RuleName" }, "Description": "Rule to detect S3 object creation and send email notification", "EventPattern": { "source": [ "aws.s3" ], "detail-type": [ "Object Created" ], "detail": { "bucket": { "name": [ { "Ref": "BucketName" } ] } } }, "State": "ENABLED", "Targets": [ { "Id": "SendToSNS", "Arn": { "Ref": "SNSTopic" }, "RoleArn": { "Fn::GetAtt": [ "EventBridgeRole", "Arn" ] } } ] } }, "EventBridgeRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/AmazonSNSFullAccess" ] } } }, "Outputs": { "BucketName": { "Description": "Name of the S3 bucket", "Value": { "Ref": "S3Bucket" } }, "SNSTopicARN": { "Description": "ARN of the SNS topic", "Value": { "Ref": "SNSTopic" } }, "EmailSubscription": { "Description": "Email address for notifications", "Value": { "Ref": "EmailAddress" } } } }