Guida introduttiva: crea una EventBridge pipa Amazon - Amazon EventBridge

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

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

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 eventi che seleziona solo gli eventi generati quando un elemento della tabella viene creato (inserito) o modificato.

Per dettagli tecnici specifici del modello, vederedettagli del modello.

Gli eventi del database vengono abbinati a un filtro e inviati a una coda se corrispondono.

Creazione della pipe usando AWS CloudFormation

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

Per prima cosa, crea il CloudFormation modello.

  1. Nella Modello sezione, fai clic sull'icona di copia nella scheda JSON o YAML per copiare il contenuto del modello.

  2. Incolla il contenuto del modello in un nuovo file.

  3. Salva il file localmente.

Creazione dello stack

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

  1. Apri la AWS CloudFormation console.

  2. Nella pagina Pile, dal menu Crea pila, scegli con nuove risorse (standard).

  3. Specificate il modello:

    1. In Prerequisito, scegli Scegli un modello esistente.

    2. In Specificare modello, scegli Carica un file modello.

    3. Scegli il file, vai al file modello e selezionalo.

    4. Scegli Next (Successivo).

  4. Specificate i dettagli dello stack:

    1. Inserisci un nome per lo stack.

    2. Per i parametri, accettate i valori predefiniti o inserite i vostri.

    3. Scegli Next (Successivo).

  5. Configura le opzioni dello stack:

    1. In Opzioni di errore dello stack, scegli Elimina tutte le risorse appena create.

      Nota

      La scelta di questa opzione evita che ti vengano addebitate le risorse la cui politica di eliminazione specifica che tali risorse vengano mantenute anche se la creazione dello stack fallisce. Per ulteriori informazioni, consulta l'DeletionPolicyattributo nella Guida per l'utente.AWS CloudFormation

    2. Accetta tutti gli altri valori predefiniti.

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

    4. Scegli Next (Successivo).

  6. Controlla i dettagli dello stack e scegli Invia.

AWS CloudFormation crea lo stack. Una volta completata la creazione dello stack, le risorse dello stack 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

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? #/tubi.

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

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

Esame del filtro del tubo

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

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.

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

  3. Scegli Explore table items (Esplora elementi della tabella).

  4. Genera un INSERT evento creando un elemento nella tabella:

    1. Scegli Crea elemento.

    2. Aggiungi valori per gli attributi Album e Artista.

    3. Scegli Crea elemento.

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

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

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

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

  6. Genera un MODIFY evento aggiungendo un attributo all'elemento:

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

    2. Dal menu Aggiungi nuovo attributo, scegli Numero.

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

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.

  2. In Target, scegli il nome della coda Amazon SQS.

    In questo modo si apre la console Amazon SQS in una finestra separata, con i dettagli della coda di destinazione visualizzati.

  3. Scegli Invia e ricevi messaggi.

  4. 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 tipoINSERT, 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 tipoMODIFY, 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 eMODIFY, quindi, ha filtrato l'DELETEevento anziché inviarlo alla coda.

Pulizia: eliminazione delle risorse

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

  2. Nella pagina Pile, scegli lo stack creato dal modello, quindi scegli Elimina, quindi conferma Elimina.

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

CloudFormation dettagli del modello

Questo modello crea risorse e concede autorizzazioni nel tuo account.

Risorse

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

  • AWS::DynamoDB::Table: una tabella DynamoDB che funge da origine degli eventi per la pipe.

  • AWS::SQS::Queue: una coda Amazon SQS che funge da destinazione per gli eventi che fluiscono attraverso la pipe.

  • AWS::IAM::Role: Un ruolo di esecuzione IAM che concede le autorizzazioni al servizio EventBridge Pipes del tuo account.

  • AWS::Pipes::Pipe: La pipe che collega la tabella DynamoDB alla coda Amazon SQS.

Autorizzazioni

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

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