

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 canal Amazon
<a name="pipes-get-started"></a>

Para nos familiarizarmos com os tubos e seus recursos, usaremos um CloudFormation modelo para configurar um EventBridge tubo e os componentes associados. Em seguida, poderemos explorar atributos de pipe variados.

**dica**  
Para uma experiência de aprendizado mais abrangente e prática, experimente o [EventBridge Pipes](https://catalog.workshops.aws/eb-pipes) Workshop. Esse workshop interativo explica como criar e solucionar problemas de um canal que conecta o DynamoDB ao API Gateway com um enriquecimento Lambda.

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 pipe implantado consiste em:
+ Uma tabela (e um fluxo) do DynamoDB para funcionar como a origem do pipe e uma fila do Amazon SQS como o 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 pipe propriamente dito, que contém um filtro de evento que só seleciona eventos gerados quando um item da tabela é criado (inserido) ou modificado.

Para obter detalhes técnicos específicos do modelo, consulte [Detalhes do modelo](#pipes-get-started-template-details).

![Os eventos do banco de dados são combinados com um filtro e enviados para uma fila se coincidirem.](http://docs.aws.amazon.com/pt_br/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_architectural.svg)


## Criando o tubo usando CloudFormation
<a name="pipes-get-started-create"></a>

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ê receberá uma cobrança pelos recursos da Amazon usados se criar uma pilha com base nesse modelo.

### Criação do modelo
<a name="pipes-get-started-file"></a>

Primeiro, crie o CloudFormation modelo.

1. Na seção [Modelo](#pipes-get-started-template), clique no ícone de cópia na guia **JSON** ou **YAML** para copiar o conteúdo do modelo.

1. Copie o conteúdo do modelo em um novo arquivo.

1. Salve o arquivo localmente.

### Criação da pilha do
<a name="pipes-get-started-stack"></a>

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

1. Abra o CloudFormation console em [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

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

1. Especifique o modelo:

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

   1. Em **Especificar modelo**, escolha **Fazer upload de um arquivo de modelo**.

   1. Selecione **Escolher arquivo**, navegue até o arquivo de modelo e selecione-o.

   1. Escolha **Próximo**.

1. Especifique os detalhes da pilha:

   1. Digite um nome de pilha.

   1. Para parâmetros, aceite os valores padrão ou insira os próprios.

   1. Escolha **Próximo**.

1. Configurar 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 ter mais informações, consulte [Atributo `DeletionPolicy`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) no *Guia do usuário do CloudFormation *.

   1. Aceite todos os outros valores padrão.

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

   1. Escolha **Próximo**.

1. Revise os detalhes a pilha e selecione **Enviar**.

**Crie a pilha usando CloudFormation ()AWS CLI**

Você também pode usar o AWS CLI para criar a pilha.
+ Use o comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html).
  + Aceite os valores de parâmetro padrão do modelo, especificando o nome da pilha. Use o parâmetro `template-body` 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}} \
      --capabilities CAPABILITY_IAM
    ```
  + Substitua o(s) valor(es) padrão de um ou mais parâmetros de modelo. Por exemplo:

    ```
    aws cloudformation create-stack \
      --stack-name {{eventbridge-rule-tutorial}} \
      --template-body {{template-contents}} \
      --parameters \
        ParameterKey=SourceTableName,ParameterValue={{pipe-example-source}} \
        ParameterKey=TargetQueueName,ParameterValue={{pipe-example-target}} \
        ParameterKey=PipeName,ParameterValue={{pipe-with-filtering-example}} \
      --capabilities CAPABILITY_IAM
    ```

CloudFormation cria a pilha. Quando a criação da pilha for 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.

## Exploração dos recursos de pipe
<a name="pipes-get-started-using"></a>

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](https://console.aws.amazon.com/events/home?#/pipes).

1. Escolha o pipe criado por você.

   Na página de detalhes do pipe, a seção **Componentes do pipe** exibe os recursos que compõem o tubo e contém guias que dão mais detalhes sobre cada componente.  
![A página de detalhes do pipe exibe graficamente os componentes de origem, filtro e destino do pipe.](http://docs.aws.amazon.com/pt_br/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_pipe-detail.png)

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

### Exame do filtro de pipe
<a name="pipes-get-started-using-filter"></a>

Antes de testarmos a operação do pipe, vamos examinar o filtro que especificamos para controlar quais eventos são enviados para o destino. O pipe só enviará eventos correspondentes aos critérios de filtro para o destino, e todos os outros são descartados. Nesse caso, só queremos que os eventos gerados quando as entradas de tabela são criadas ou modificadas enviadas para a fila do Amazon SQS.
+ Na página de detalhes do pipe, em **Componentes do pipe**, escolha a guia **Filtragem**.

  Incluímos um filtro que só seleciona eventos nos quais o `eventName` está definido como `INSERT` ou `MODIFY`. 

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

### Envio de eventos pelo pipe
<a name="pipes-get-started-using-source"></a>

Em seguida, geraremos eventos na fonte do pipe para testar se a filtragem e a entrega do pipe estão funcionando corretamente. Para isso, vamos criar e editar um item na tabela do DynamoDB especificada por nós como a fonte do pipe.

1. Na página de detalhes do pipe, em **Componentes do pipe**, escolha a guia **Fonte**.

1. Em **Fonte**, escolha o nome do fluxo do DynamoDB.

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

1. Escolha **Explorar itens**.

1. Gere um evento `INSERT` criando um item na tabela:

   1. Selecione **Create Item** (Criar item).

   1. Adicione valores para os atributos **Álbum** e **Artista**.

   1. Selecione **Create Item** (Criar item).

1. Gere um evento `INSERT` e um evento `DELETE` editando o item:

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

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

   1. Marque a caixa que confirma que você está alterando o valor das chaves de item e escolha **Recriar item**.

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

1. Gere um evento `MODIFY` adicionando um atributo ao item:

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

   1. No menu **Adicionar novo atributo**, escolha **Número**.

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

### Confirmação da entrega do evento pelo pipe
<a name="pipes-get-started-using-target"></a>

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

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

1. Em **Destino**, escolha o nome da fila do Amazon SQS.

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

1. Escolha **Enviar e receber mensagens**.

1. Em **Receber mensagens**, escolha **Sondar mensagens**.

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

   Deve haver três mensagens de evento na fila: 
   + Duas do tipo `INSERT`, uma gerada quando você criou o item da tabela pela primeira vez, e a outra gerada quando você recriou o item alterando um valor de chave.
   + Uma do tipo `MODIFY`, gerada quando você adicionou um atributo ao item da tabela.

   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 pipe que especificamos só é selecionado em `INSERT` e `MODIFY`, logo, o pipe filtrou o evento `DELETE`, em vez de entregá-lo na fila.

## Limpar: exclusão de recursos
<a name="pipes-get-started-delete"></a>

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

**Importante**  
Você receberá uma cobrança pelos recursos da Amazon contidos na pilha enquanto ela existir.

1. Abra o CloudFormation console em [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

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

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

## CloudFormation detalhes do modelo
<a name="pipes-get-started-template-details"></a>

Esse modelo cria recursos e concede permissões na conta.

### Recursos
<a name="pipes-get-started-template-resources"></a>

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

**Importante**  
Você receberá uma cobrança pelos recursos da Amazon usados se criar uma pilha com base nesse modelo.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html): uma tabela do DynamoDB que funciona como a fonte de eventos do pipe. 
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html): uma fila do Amazon SQS que funciona como destino para os eventos que passam pelo pipe.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html): uma função de execução do IAM que concede permissões ao serviço EventBridge Pipes em sua conta.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pipes-pipe.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pipes-pipe.html): o pipe que conecta a tabela do DynamoDB à fila do Amazon SQS.

### Permissões
<a name="pipes-get-started-template-perms"></a>

O modelo inclui um recurso `AWS::IAM::Role` 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 seguintes permissões têm como escopo a tabela do DynamoDB e transmitem o modelo criado como a fonte do evento para o pipe:
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

A seguinte permissão tem como escopo a fila do Amazon SQS criada pela pilha como o destino do pipe:
+ `sqs:SendMessage`

## CloudFormation modelo
<a name="pipes-get-started-template"></a>

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" : "[AWSDocs] EventBridge: pipes-get-started",

  "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: '[AWSDocs] EventBridge: pipes-get-started'
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
```

------