

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Guida introduttiva: crea una EventBridge pipa Amazon
<a name="pipes-get-started"></a>

Per acquisire familiarità con le pipe e le loro funzionalità, utilizzeremo un CloudFormation modello per configurare una EventBridge pipe e i componenti associati. Poi potremo esplorare varie caratteristiche delle tubazioni.

**Suggerimento**  
Per un'esperienza di apprendimento più completa e pratica, prova il [EventBridge Pipes](https://catalog.workshops.aws/eb-pipes) Workshop. Questo workshop interattivo illustra la creazione e la risoluzione dei problemi di una pipe che collega DynamoDB all'API Gateway con un arricchimento Lambda.

Il modello crea una EventBridge pipe che collega un flusso da una tabella DynamoDB a una coda Amazon SQS. Ogni volta che un record viene creato o modificato nella tabella del database, la pipe invia l'evento risultante alla coda. 

La pipe distribuita è composta da:
+ Una tabella (e un flusso) DynamoDB che funge da sorgente pipe e una coda Amazon SQS come destinazione.
+ Un ruolo di esecuzione che concede EventBridge le autorizzazioni necessarie per accedere alla tabella DynamoDB e alla coda Amazon SQS.
+ La pipe stessa, che contiene un filtro di eventi che seleziona solo gli eventi generati quando un elemento della tabella viene creato (inserito) o modificato.

Per dettagli tecnici specifici del modello, vedere[Dettagli del modello](#pipes-get-started-template-details).

![\[Gli eventi del database vengono abbinati a un filtro e inviati a una coda se corrispondono.\]](http://docs.aws.amazon.com/it_it/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_architectural.svg)


## Creazione della pipe usando CloudFormation
<a name="pipes-get-started-create"></a>

Per creare la pipe e le risorse associate, creeremo un CloudFormation modello e lo useremo per creare uno stack contenente una pipe di esempio, completa di sorgente e destinazione.

**Importante**  
Se crei uno stack da questo modello, ti verranno addebitate le risorse Amazon utilizzate.

### Creazione del modello
<a name="pipes-get-started-file"></a>

Per prima cosa, crea il CloudFormation modello.

1. Nella sezione [Modello](#pipes-get-started-template), fai clic sull’icona di copia nella scheda **JSON** o **YAML** per copiare i contenuti del modello.

1. Copia i contenuti del modello in un nuovo file.

1. Salva il file localmente.

### Creazione dello stack
<a name="pipes-get-started-stack"></a>

Quindi, usa il modello che hai salvato per effettuare il provisioning di uno CloudFormation stack.

1. Apri la CloudFormation console all'indirizzo [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

1. Nella pagina **Stack**, scegli **Con nuove risorse (standard)** nel menu **Crea stack**.

1. Specifica il modello:

   1. In **Prerequisito**, seleziona **Scegli un modello esistente**.

   1. In **Specifica modello**, seleziona **Carica un file di modello**.

   1. Seleziona **Scegli file**, quindi passa al file del modello e selezionalo.

   1. Scegli **Next (Successivo)**.

1. Specifica i dettagli dello stack:

   1. Inserisci un nome dello stack.

   1. Per i parametri, accetta i valori predefiniti o inserisci i tuoi.

   1. Scegli **Next (Successivo)**.

1. Configura le opzioni dello stack:

   1. In **Opzioni di errore dello stack**, scegli **Elimina tutte le nuove risorse create**.
**Nota**  
Scegliendo questa opzione si evita di ricevere addebiti per risorse la cui policy di eliminazione specifica che devono essere mantenute anche se la creazione dello stack non riesce. Per ulteriori informazioni, consulta la pagina relativa all’[attributo `DeletionPolicy`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) nella *Guida per l’utente di CloudFormation *.

   1. Accetta tutti gli altri valori predefiniti.

   1. In **Capacità**, seleziona la casella per confermare che CloudFormation potresti creare risorse IAM nel tuo account.

   1. Scegli **Next (Successivo)**.

1. Rivedi i dettagli dello stack e scegli **Invia**.

**Crea lo stack usando CloudFormation ()AWS CLI**

Puoi anche usare il AWS CLI per creare lo stack.
+ Utilizza il 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).
  + Accettate i valori dei parametri predefiniti del modello, specificando il nome dello stack. Utilizzate il `template-body` parametro per passare il contenuto del modello o `template-url` per specificare una posizione URL.

    ```
    aws cloudformation create-stack \
      --stack-name eventbridge-rule-tutorial \
      --template-body template-contents \
      --capabilities CAPABILITY_IAM
    ```
  + Sostituisci i valori predefiniti di uno o più parametri del modello. Esempio:

    ```
    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 crea lo stack. Una volta completata la creazione dello stack, le relative risorse sono pronte per l’uso. Puoi utilizzare la scheda **Risorse** nella pagina dei dettagli dello stack per visualizzare le risorse disponibili nel tuo account.

## Esplorazione delle funzionalità delle pipe
<a name="pipes-get-started-using"></a>

Una volta creata la pipe, puoi utilizzare la EventBridge console per osservare il funzionamento della pipe e testare la consegna degli eventi.

1. Aprire la EventBridge console a [https://console.aws.amazon.com/events/casa? \$1/tubi](https://console.aws.amazon.com/events/home?#/pipes).

1. Scegli la pipa che hai creato.

   Nella pagina dei dettagli della tubazione, la sezione **Componenti del tubo** mostra le risorse che compongono la tubazione e contiene schede che forniscono maggiori dettagli su ciascun componente.  
![\[La pagina dei dettagli della tubazione mostra graficamente i componenti di origine, filtro e destinazione della tubazione.\]](http://docs.aws.amazon.com/it_it/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_pipe-detail.png)

   Puoi trovare il ruolo di esecuzione che abbiamo creato per la pipe nella scheda **Impostazioni**, nella sezione **Autorizzazioni**.

### Esame del filtro del tubo
<a name="pipes-get-started-using-filter"></a>

Prima di testare il funzionamento della pipe, esaminiamo il filtro che abbiamo specificato per controllare quali eventi vengono inviati alla destinazione. La pipe invierà alla destinazione solo gli eventi che corrispondono ai criteri di filtro; tutti gli altri verranno scartati. In questo caso, vogliamo che solo gli eventi generati quando le voci della tabella vengono create o modificate vengano inviati alla coda di Amazon SQS.
+ Nella pagina dei dettagli della tubazione, in **Pipe Components**, scegli la scheda **Filtraggio**.

  Abbiamo incluso un filtro che seleziona solo gli eventi in cui `eventName` è impostato su o. `INSERT` `MODIFY` 

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

### Invio di eventi tramite la pipe
<a name="pipes-get-started-using-source"></a>

Successivamente, genereremo eventi nella sorgente della pipe per verificare che il filtraggio e la consegna delle pipe funzionino correttamente. Per fare ciò, creeremo e modificheremo un elemento nella tabella DynamoDB che abbiamo specificato come sorgente pipe.

1. Nella pagina dei dettagli della tubazione, in **Pipe Components**, selezionate la scheda **Source**.

1. In **Source**, scegli il nome del flusso DynamoDB.

   Questo apre la console DynamoDB in una finestra separata, con i dettagli della tabella di origine visualizzati.

1. Scegli **Esplora** elementi.

1. Genera un `INSERT` evento creando un elemento nella tabella:

   1. Scegli **Crea elemento**.

   1. Aggiungi valori per gli attributi **Album** e **Artista**.

   1. Scegli **Crea elemento**.

1. Genera un evento `DELETE` e un `INSERT` evento modificando l'elemento:

   1. Scegli l'elemento dall'elenco e dal menu **Azioni** scegli **Modifica elemento**.

   1. Inserisci un nuovo valore per l'attributo **Album** o **Artista**.

   1. Seleziona la casella che conferma che stai modificando il valore delle chiavi dell'elemento, quindi scegli **Ricrea** elemento.

      Ciò comporta l'eliminazione e la ricreazione dell'elemento, la generazione di un `DELETE` evento e quindi di un nuovo evento. `INSERT`

1. Genera un `MODIFY` evento aggiungendo un attributo all'elemento:

   1. Scegli l'elemento dall'elenco e dal menu **Azioni** scegli **Modifica elemento**.

   1. Dal menu **Aggiungi nuovo attributo**, scegli **Numero**.

   1. Per il nome dell'attributo, inserisci **Anno**, quindi inserisci un valore per l'attributo. Selezionare **Save and close (Salva e chiudi)**.

### Conferma della consegna dell'evento tramite pipe
<a name="pipes-get-started-using-target"></a>

Infine, confermeremo che la pipe ha filtrato e fornito correttamente gli eventi che abbiamo generato creando e modificando l'elemento della tabella in DynamoDB.

1. **Nella pagina dei dettagli della tubazione, in **Pipe Components**, selezionate la scheda Target.**

1. In **Target**, scegli il nome della coda Amazon SQS.

   Questo apre la console Amazon SQS in una finestra separata, con i dettagli della coda di destinazione visualizzati.

1. Scegli **Invia e ricevi messaggi**.

1. In **Ricevi messaggi**, scegli **Sondaggio** per i messaggi.

   Amazon SQS carica i messaggi ricevuti nella coda. Fai clic su un singolo messaggio per visualizzarne i dettagli.

   Dovrebbero esserci tre messaggi relativi agli eventi nella coda: 
   + Due di tipo`INSERT`, uno generato quando hai creato per la prima volta l'elemento della tabella e l'altro generato quando hai ricreato l'elemento modificando un valore chiave.
   + Uno di tipo`MODIFY`, generato quando hai aggiunto un attributo all'elemento della tabella.

   Nota che non c'è un messaggio di evento di tipo `DELETE` nella coda, anche se ne è stato generato uno quando hai eliminato e ricreato l'elemento della tabella modificando un valore chiave. Il filtro pipe che abbiamo specificato si limita a selezionare `INSERT` e`MODIFY`, quindi, ha filtrato l'`DELETE`evento anziché inviarlo alla coda.

## Pulizia: eliminazione delle risorse
<a name="pipes-get-started-delete"></a>

Come passaggio finale, elimineremo lo stack e le risorse in esso contenute.

**Importante**  
Ti verranno addebitate le risorse Amazon contenute nello stack per tutto il tempo in cui esiste.

1. Apri la CloudFormation console all'indirizzo. [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/)

1. Nella pagina **Stack**, scegli lo stack creato dal modello, poi scegli **Elimina**, quindi conferma con **Elimina**.

   CloudFormation avvia l'eliminazione dello stack e di tutte le risorse che include.

## CloudFormation dettagli del modello
<a name="pipes-get-started-template-details"></a>

Questo modello crea risorse e concede autorizzazioni nel tuo account.

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

Il CloudFormation modello di questo tutorial creerà le seguenti risorse nel tuo account:

**Importante**  
Se crei uno stack da questo modello, ti verranno addebitate le risorse Amazon utilizzate.
+ [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): una tabella DynamoDB che funge da origine degli eventi per la 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): una coda Amazon SQS che funge da destinazione per gli eventi che fluiscono attraverso la 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): Un ruolo di esecuzione IAM che concede le autorizzazioni al servizio EventBridge Pipes del tuo account.
+ [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): La pipe che collega la tabella DynamoDB alla coda Amazon SQS.

### Permissions
<a name="pipes-get-started-template-perms"></a>

Il modello include una `AWS::IAM::Role` risorsa che rappresenta un ruolo di esecuzione. Questo ruolo concede al servizio EventBridge Pipes (`pipes.amazonaws.com`) le seguenti autorizzazioni nell'account.

Le seguenti autorizzazioni sono limitate alla tabella DynamoDB e al flusso creato dal modello come origine dell'evento per la pipe:
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

La seguente autorizzazione è limitata alla coda Amazon SQS creata dallo stack come destinazione della pipe:
+ `sqs:SendMessage`

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

Salva il seguente codice JSON o YAML come file separato da utilizzare come CloudFormation modello per questo 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
```

------