Primeiros passos: Crie um EventBridge cachimbo 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 um EventBridge cachimbo da Amazon

Para nos familiarizarmos com os tubos e seus recursos, usaremos um AWS CloudFormation modelo para configurar um EventBridge tubo e os componentes associados. Em seguida, podemos explorar várias características do tubo.

O modelo cria um EventBridge canal que conecta um stream de uma tabela do DynamoDB a uma fila do Amazon SQS. Sempre que um registro é criado ou modificado na tabela do banco de dados, o pipe envia o evento resultante para a fila.

O tubo implantado consiste em:

  • Uma tabela (e stream) do DynamoDB para atuar como origem do canal e uma fila do Amazon SQS como destino.

  • Uma função de execução que EventBridge concede as permissões necessárias para acessar a tabela do DynamoDB e a fila do Amazon SQS.

  • O canal em si, que contém um filtro de eventos que seleciona somente os eventos gerados quando um item da tabela é criado (inserido) ou modificado.

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

Os eventos do banco de dados são combinados com um filtro e enviados para uma fila se corresponderem.

Criando o tubo usando AWS CloudFormation

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

Importante

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

Criando o 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.

Criação da pilha do

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

  1. Abra o AWS CloudFormation console.

  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 ou insira seus próprios.

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

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

Explorando as capacidades dos tubos

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

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

  2. Escolha o tubo que você criou.

    Na página de detalhes do tubo, a seção Componentes do tubo exibe os recursos que compõem o tubo e contém guias que fornecem mais detalhes sobre cada componente.

    A página de detalhes da tubulação exibe graficamente os componentes de origem, filtro e destino da tubulação.

    Você pode encontrar a função de execução que criamos para o pipe na guia Configurações, na seção Permissões.

Examinando o filtro de tubulação

Antes de testarmos a operação do tubo, vamos examinar o filtro que especificamos para controlar quais eventos são enviados ao destino. O pipe enviará somente eventos que correspondam aos critérios do filtro para o destino; todos os outros serão descartados. Nesse caso, só queremos que os eventos gerados quando as entradas da tabela são criadas ou modificadas sejam enviadas para a fila do Amazon SQS.

  • Na página de detalhes da tubulação, em Componentes da tubulação, escolha a guia Filtragem.

    Incluímos um filtro que seleciona somente eventos em que o eventName está definido como INSERT ouMODIFY.

    { "eventName": ["INSERT", "MODIFY"] }

Enviando eventos pelo tubo

Em seguida, geraremos eventos na fonte do tubo para testar se a filtragem e a entrega do tubo estão funcionando corretamente. Para fazer isso, criaremos e editaremos um item na tabela do DynamoDB que especificamos como fonte do pipe.

  1. Na página de detalhes da tubulação, em Componentes da tubulação, escolha a guia Fonte.

  2. Em Origem, escolha o nome do stream do DynamoDB.

    Isso abre o console do DynamoDB em uma janela separada, com os detalhes da tabela de origem exibidos.

  3. Escolha Explore table items (Explorar itens da tabela).

  4. Gere um INSERT evento criando um item na tabela:

    1. Selecione Create Item (Criar item).

    2. Adicione valores para os atributos Álbum e Artista.

    3. Selecione Create Item (Criar item).

  5. Gere um INSERT evento DELETE e um editando o item:

    1. Escolha o item na lista e, no menu Ações, escolha Editar item.

    2. Insira um novo valor para o atributo Álbum ou Artista.

    3. Marque a caixa que confirma que você está alterando o valor das chaves do item e escolha Recriar item.

      Isso resulta na exclusão e recriação do item, gerando um DELETE evento e, em seguida, um novo INSERT evento.

  6. Gere um MODIFY evento adicionando um atributo ao item:

    1. Escolha o item na lista e, no menu Ações, escolha Editar item.

    2. No menu Adicionar novo atributo, escolha Número.

    3. Para o nome do atributo, insira Ano e, em seguida, insira um valor para o atributo. Escolha Save and close.

Confirmando a entrega do evento pela tubulação

Por fim, confirmaremos que o canal filtrou e entregou com sucesso os eventos que geramos ao criar e editar o item da tabela no DynamoDB.

  1. Na página de detalhes do tubo, em Componentes do tubo, escolha a guia Destino.

  2. Em Target, escolha o nome da fila do Amazon SQS.

    Isso abre o console do Amazon SQS em uma janela separada, com os detalhes da fila de destino exibidos.

  3. Escolha Enviar e receber mensagens.

  4. Em Receber mensagens, escolha Sondar mensagens.

    O Amazon SQS carrega as mensagens recebidas na fila. Clique em uma mensagem individual para ver seus detalhes.

    Deve haver três mensagens de eventos na fila:

    • Dois do tipoINSERT, um gerado quando você criou o item da tabela pela primeira vez e o outro gerado quando você recriou o item alterando um valor-chave.

    • Um do tipoMODIFY, gerado quando você adiciona um atributo ao item da tabela.

    Observe que não há uma mensagem de evento do tipo DELETE na fila, mesmo que uma tenha sido gerada quando você excluiu e recriou o item da tabela alterando um valor de chave. O filtro de tubulação que especificamos apenas seleciona em INSERT eMODIFY, portanto, o canal filtrou o DELETE evento em vez de entregá-lo à fila.

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 AWS CloudFormation console.

  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 AWS 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::DynamoDB::Table: uma tabela do DynamoDB que atua como fonte de eventos para o canal.

  • AWS::SQS::Queue: uma fila do Amazon SQS que atua como destino para os eventos que fluem pelo canal.

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

  • AWS::Pipes::Pipe: o canal que conecta a tabela do DynamoDB à fila do Amazon SQS.

Permissões

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

As permissões a seguir têm como escopo a tabela do DynamoDB e transmitem o modelo criado como fonte do evento para o canal:

  • dynamodb:DescribeStream

  • dynamodb:GetRecords

  • dynamodb:GetShardIterator

  • dynamodb:ListStreams

A permissão a seguir tem como escopo a fila do Amazon SQS que a pilha cria como destino do canal:

  • sqs:SendMessage

CloudFormation modelo

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

JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "EventBridge Pipe template example. Provisions a pipe, along with a DynamoDB stream as the pipe source and an SQS queue as the pipe target. Also provisions an execution role that contains the necessary permissions to access both the source and target. Once provisioned, the pipe receives events from the DynamoDB data stream, applies a filter, and sends matching events on to an SQS Queue. You will be billed for the Amazon resources used if you create a stack from this template.", "Parameters" : { "SourceTableName" : { "Type" : "String", "Default" : "pipe-example-source", "Description" : "Specify the name of the table to provision as the pipe source, or accept the default." }, "TargetQueueName" : { "Type" : "String", "Default" : "pipe-example-target", "Description" : "Specify the name of the queue to provision as the pipe target, or accept the default." }, "PipeName" : { "Type" : "String", "Default" : "pipe-with-filtering-example", "Description" : "Specify the name of the table to provision as the pipe source, or accept the default." } }, "Resources": { "PipeSourceDynamoDBTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [{ "AttributeName": "Album", "AttributeType": "S" }, { "AttributeName": "Artist", "AttributeType": "S" } ], "KeySchema": [{ "AttributeName": "Album", "KeyType": "HASH" }, { "AttributeName": "Artist", "KeyType": "RANGE" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 10, "WriteCapacityUnits": 10 }, "StreamSpecification": { "StreamViewType": "NEW_AND_OLD_IMAGES" }, "TableName": { "Ref" : "SourceTableName" } } }, "PipeTargetQueue": { "Type": "AWS::SQS::Queue", "Properties": { "QueueName": { "Ref" : "TargetQueueName" } } }, "PipeTutorialPipeRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "pipes.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": { "Fn::Join": [ "", [ "arn:", { "Ref": "AWS::Partition" }, ":pipes:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":pipe/", { "Ref": "PipeName" } ] ] }, "aws:SourceAccount": { "Ref" : "AWS::AccountId" } } } }] }, "Description" : "EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe.", "Path": "/", "Policies": [{ "PolicyName": "SourcePermissions", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:ListStreams" ], "Resource": [ { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] } ] }] } }, { "PolicyName": "TargetPermissions", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": [ { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] } ] }] } } ] } }, "PipeWithFiltering": { "Type": "AWS::Pipes::Pipe", "Properties": { "Description" : "EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue.", "Name": { "Ref" : "PipeName" }, "RoleArn": {"Fn::GetAtt" : ["PipeTutorialPipeRole", "Arn"] }, "Source": { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] }, "SourceParameters": { "DynamoDBStreamParameters" : { "StartingPosition" : "LATEST" }, "FilterCriteria" : { "Filters" : [ { "Pattern" : "{ \"eventName\": [\"INSERT\", \"MODIFY\"] }" }] } }, "Target": { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] } } } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Description: EventBridge Pipe template example. Provisions a pipe, along with a DynamoDB stream as the pipe source and an SQS queue as the pipe target. Also provisions an execution role that contains the necessary permissions to access both the source and target. Once provisioned, the pipe receives events from the DynamoDB data stream, applies a filter, and sends matching events on to an SQS Queue. You will be billed for the Amazon resources used if you create a stack from this template. Parameters: SourceTableName: Type: String Default: pipe-example-source Description: Specify the name of the table to provision as the pipe source, or accept the default. TargetQueueName: Type: String Default: pipe-example-target Description: Specify the name of the queue to provision as the pipe target, or accept the default. PipeName: Type: String Default: pipe-with-filtering-example Description: Specify the name of the table to provision as the pipe source, or accept the default. Resources: PipeSourceDynamoDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: Album AttributeType: S - AttributeName: Artist AttributeType: S KeySchema: - AttributeName: Album KeyType: HASH - AttributeName: Artist KeyType: RANGE ProvisionedThroughput: ReadCapacityUnits: 10 WriteCapacityUnits: 10 StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES TableName: !Ref SourceTableName PipeTargetQueue: Type: AWS::SQS::Queue Properties: QueueName: !Ref TargetQueueName PipeTutorialPipeRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: pipes.amazonaws.com Action: sts:AssumeRole Condition: StringLike: aws:SourceArn: !Join - '' - - 'arn:' - !Ref AWS::Partition - ':pipes:' - !Ref AWS::Region - ':' - !Ref AWS::AccountId - ':pipe/' - !Ref PipeName aws:SourceAccount: !Ref AWS::AccountId Description: EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe. Path: / Policies: - PolicyName: SourcePermissions PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeStream - dynamodb:GetRecords - dynamodb:GetShardIterator - dynamodb:ListStreams Resource: - !GetAtt PipeSourceDynamoDBTable.StreamArn - PolicyName: TargetPermissions PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - sqs:SendMessage Resource: - !GetAtt PipeTargetQueue.Arn PipeWithFiltering: Type: AWS::Pipes::Pipe Properties: Description: EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue. Name: !Ref PipeName RoleArn: !GetAtt PipeTutorialPipeRole.Arn Source: !GetAtt PipeSourceDynamoDBTable.StreamArn SourceParameters: DynamoDBStreamParameters: StartingPosition: LATEST FilterCriteria: Filters: - Pattern: '{ "eventName": ["INSERT", "MODIFY"] }' Target: !GetAtt PipeTargetQueue.Arn