View a markdown version of this page

Erste Schritte: Erstellen Sie eine EventBridge Amazon-Pipe - Amazon EventBridge

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erste Schritte: Erstellen Sie eine EventBridge Amazon-Pipe

Um uns mit Leitungen und ihren Funktionen vertraut zu machen, verwenden wir eine CloudFormation Vorlage, um eine EventBridge Leitung und die zugehörigen Komponenten einzurichten. Anschließend können wir verschiedene Rohrmerkmale untersuchen.

Tipp

Für eine umfassendere, praktische Lernerfahrung probieren Sie den EventBridge Pipes Workshop aus. Dieser interaktive Workshop führt Sie durch den Aufbau und die Fehlerbehebung einer Pipe, die DynamoDB über eine Lambda-Anreicherung mit API Gateway verbindet.

Die Vorlage erstellt eine EventBridge Pipe, die einen Stream von einer DynamoDB-Tabelle mit einer Amazon SQS-Warteschlange verbindet. Jedes Mal, wenn ein Datensatz in der Datenbanktabelle erstellt oder geändert wird, sendet die Pipe das resultierende Ereignis an die Warteschlange.

Die bereitgestellte Pipe besteht aus:

  • Eine DynamoDB-Tabelle (und ein Stream) als Pipe-Quelle und eine Amazon SQS-Warteschlange als Ziel.

  • Eine Ausführungsrolle, die die erforderlichen Berechtigungen für EventBridge den Zugriff auf die DynamoDB-Tabelle und die Amazon SQS-Warteschlange gewährt.

  • Die Pipe selbst, die einen Ereignisfilter enthält, der nur Ereignisse auswählt, die generiert werden, wenn ein Tabellenelement erstellt (eingefügt) oder geändert wird.

Spezifische technische Details der Vorlage finden Sie unterDetails zur Vorlage.

Datenbankereignisse werden einem Filter zugeordnet und an eine Warteschlange gesendet, wenn sie übereinstimmen.

Erstellen der Pipe mit CloudFormation

Um die Leitung und die zugehörigen Ressourcen zu erstellen, erstellen wir eine CloudFormation Vorlage und verwenden sie, um einen Stapel zu erstellen, der eine Probenleitung mit Quelle und Ziel enthält.

Wichtig

Wenn Sie einen Stack aus dieser Vorlage erstellen, werden Ihnen die verwendeten Amazon-Ressourcen in Rechnung gestellt.

Erstellen Sie zunächst die CloudFormation Vorlage.

  1. Klicken Sie im Abschnitt „Vorlage“ auf das Kopiersymbol auf der Registerkarte JSON oder YAML, um den Inhalt der Vorlage zu kopieren.

  2. Fügen Sie den Inhalt der Vorlage in eine neue Datei ein.

  3. Speichern Sie die Datei lokal.

Verwenden Sie als Nächstes die Vorlage, die Sie gespeichert haben, um einen CloudFormation Stack bereitzustellen.

  1. Öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/.

  2. Auf der Seite Stacks wählen Sie im Menü Stack erstellen die Option Mit neuen Ressourcen (Standard) aus.

  3. Legen Sie die Vorlage fest:

    1. Wählen Sie unter Voraussetzung die Option Vorhandene Vorlage wählen aus.

    2. Wählen Sie unter Vorlage angeben die Option Eine Vorlagendatei hochladen aus.

    3. Klicken Sie auf Datei auswählen, navigieren Sie zur gewünschten Vorlagendatei und wählen Sie diese aus.

    4. Wählen Sie Weiter aus.

  4. Geben Sie die Stack-Details ein:

    1. Geben Sie einen Stack-Namen ein.

    2. Übernehmen Sie für Parameter die Standardwerte oder geben Sie Ihre eigenen ein.

    3. Wählen Sie Weiter aus.

  5. Konfigurieren Sie die Stack-Optionen:

    1. Wählen Sie unter Optionen für Stack-Fehler die Option Löschen aller neu erstellten Ressourcen aus.

      Anmerkung

      Durch Auswahl dieser Option vermeiden Sie möglicherweise anfallende Kosten für Ressourcen, deren Löschrichtlinie die Beibehaltung auch vorsieht, wenn die Stack-Erstellung fehlschlägt. Weitere Informationen finden Sie unter DeletionPolicy-Attribut im Benutzerhandbuch zu CloudFormation .

    2. Akzeptieren Sie alle anderen Standardwerte.

    3. Markieren Sie unter Funktionen das Kästchen, um zu bestätigen, dass CloudFormation möglicherweise IAM-Ressourcen in Ihrem Konto erstellt werden.

    4. Wählen Sie Weiter aus.

  6. Überprüfen Sie die Stack-Details und klicken Sie auf Absenden.

Erstellen Sie den Stack mit CloudFormation (AWS CLI)

Sie können den auch verwenden AWS CLI , um den Stapel zu erstellen.

  • Verwenden Sie den Befehl create-stack.

    • Übernehmen Sie die Standardwerte der Vorlagenparameter und geben Sie den Stacknamen an. Verwenden Sie den template-body Parameter, um den Inhalt der Vorlage zu übergeben oder template-url um einen URL-Speicherort anzugeben.

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ --template-body template-contents \ --capabilities CAPABILITY_IAM
    • Überschreiben Sie die Standardwerte eines oder mehrerer Vorlagenparameter. Beispiel:

      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 erstellt den Stapel. Sobald die Stack-Erstellung abgeschlossen ist, können die Stack-Ressourcen verwendet werden. Sie können den Tab Ressourcen auf der Stack-Detailseite verwenden, um die Ressourcen anzuzeigen, die in Ihrem Konto bereitgestellt wurden.

Erkunden Sie die Funktionen von Pipes

Sobald die Pipe erstellt wurde, können Sie die EventBridge Konsole verwenden, um den Betrieb der Pipe zu beobachten und die Übertragung von Ereignissen zu testen.

  1. Öffnen Sie die EventBridge Konsole unter https://console.aws.amazon.com/events/home? #/Rohre.

  2. Wählen Sie das Rohr aus, das Sie erstellt haben.

    Auf der Rohrdetailseite werden im Abschnitt Rohrkomponenten die Ressourcen angezeigt, aus denen sich die Leitung zusammensetzt. Er enthält Registerkarten mit weiteren Informationen zu den einzelnen Komponenten.

    Auf der Rohrdetailseite werden Quell-, Filter- und Zielkomponenten für die Leitung grafisch dargestellt.

    Die Ausführungsrolle, die wir für die Pipe erstellt haben, finden Sie auf der Registerkarte Einstellungen im Abschnitt Berechtigungen.

Wir untersuchen den Pipefilter

Bevor wir die Pipe-Operation testen, untersuchen wir den Filter, den wir angegeben haben, um zu steuern, welche Ereignisse an das Ziel gesendet werden. Die Pipe sendet nur Ereignisse an das Ziel, die den Filterkriterien entsprechen; alle anderen werden verworfen. In diesem Fall möchten wir nur, dass Ereignisse, die generiert werden, wenn Tabelleneinträge erstellt oder geändert werden, an die Amazon SQS-Warteschlange gesendet werden.

  • Wählen Sie auf der Rohrdetailseite unter Rohrkomponenten die Registerkarte Filterung aus.

    Wir haben einen Filter hinzugefügt, der nur Ereignisse auswählt, bei denen der eventName Wert auf INSERT oder gesetzt istMODIFY.

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

Ereignisse über die Pipe senden

Als Nächstes generieren wir Ereignisse in der Pipe-Quelle, um zu testen, ob die Pipe-Filterung und -Übertragung ordnungsgemäß funktionieren. Dazu erstellen und bearbeiten wir ein Element in der DynamoDB-Tabelle, die wir als Pipe-Quelle angegeben haben.

  1. Wählen Sie auf der Rohrdetailseite unter Rohrkomponenten die Registerkarte Quelle aus.

  2. Wählen Sie unter Quelle den DynamoDB-Streamnamen aus.

    Dadurch wird die DynamoDB-Konsole in einem separaten Fenster geöffnet, in dem die Quelltabellendetails angezeigt werden.

  3. Wählen Sie Artikel durchsuchen aus.

  4. Generieren Sie ein INSERT Ereignis, indem Sie ein Element in der Tabelle erstellen:

    1. Wählen Sie Element erstellen aus.

    2. Fügen Sie Werte für die Attribute Album und Künstler hinzu.

    3. Wählen Sie Element erstellen aus.

  5. Generieren Sie ein DELETE und ein INSERT Ereignis, indem Sie das Element bearbeiten:

    1. Wählen Sie das Element aus der Liste aus und wählen Sie im Menü Aktionen die Option Element bearbeiten aus.

    2. Geben Sie einen neuen Wert für das Album - oder Künstlerattribut ein.

    3. Markieren Sie das Kästchen, das bestätigt, dass Sie den Wert der Objektschlüssel ändern, und wählen Sie dann Objekt neu erstellen.

      Dies führt dazu, dass das Element gelöscht und dann neu erstellt wird, wodurch ein DELETE Ereignis und dann ein neues INSERT Ereignis generiert wird.

  6. Generieren Sie ein MODIFY Ereignis, indem Sie dem Element ein Attribut hinzufügen:

    1. Wählen Sie das Element aus der Liste aus und wählen Sie im Menü Aktionen die Option Element bearbeiten aus.

    2. Wählen Sie im Menü Neues Attribut hinzufügen die Option Zahl aus.

    3. Geben Sie für den Attributnamen Year ein, und geben Sie dann einen Wert für das Attribut ein. Klicken Sie auf Save and close.

Bestätigung der Übertragung des Ereignisses über die Pipeline

Abschließend bestätigen wir, dass die Pipe die Ereignisse, die wir beim Erstellen und Bearbeiten des Tabellenelements in DynamoDB generiert haben, erfolgreich gefiltert und übermittelt hat.

  1. Wählen Sie auf der Rohrdetailseite unter Rohrkomponenten die Registerkarte Ziel aus.

  2. Wählen Sie unter Ziel den Namen der Amazon SQS-Warteschlange aus.

    Dadurch wird die Amazon SQS-Konsole in einem separaten Fenster geöffnet, in dem die Details der Zielwarteschlange angezeigt werden.

  3. Wählen Sie Nachrichten senden und empfangen.

  4. Wählen Sie unter Nachrichten empfangen die Option Nach Nachrichten abfragen aus.

    Amazon SQS lädt eingegangene Nachrichten in die Warteschlange. Klicken Sie auf eine einzelne Nachricht, um deren Details zu sehen.

    In der Warteschlange sollten sich drei Ereignismeldungen befinden:

    • Zwei vom TypINSERT, eine wurde generiert, als Sie das Tabellenelement zum ersten Mal erstellt haben, und die andere, als Sie das Element durch Ändern eines Schlüsselwerts neu erstellt haben.

    • Einer vom TypMODIFY, der generiert wurde, als Sie dem Tabellenelement ein Attribut hinzugefügt haben.

    Beachten Sie, dass sich DELETE in der Warteschlange keine Ereignismeldung dieses Typs befindet, obwohl eine generiert wurde, als Sie das Tabellenelement gelöscht und neu erstellt haben, indem Sie einen Schlüsselwert geändert haben. Der angegebene Pipefilter wählt nur ein INSERT und ausMODIFY, sodass die Pipe das DELETE Ereignis herausgefiltert hat, anstatt es an die Warteschlange weiterzuleiten.

Bereinigung: Löschen von Ressourcen

Als letzten Schritt löschen wir den Stack und die darin enthaltenen Ressourcen.

Wichtig

Die im Stack enthaltenen Amazon-Ressourcen werden Ihnen in Rechnung gestellt, solange dieser vorhanden ist.

  1. Öffnen Sie die CloudFormation Konsole unter. https://console.aws.amazon.com/cloudformation/

  2. Wählen Sie auf der Seite Stacks den aus der Vorlage erstellten Stack aus und klicken Sie auf Löschen. Bestätigen Sie dann Löschen.

    CloudFormation initiiert das Löschen des Stacks und aller darin enthaltenen Ressourcen.

CloudFormation Details zur Vorlage

Diese Vorlage erstellt Ressourcen und gewährt Berechtigungen in Ihrem Konto.

Ressourcen

Die CloudFormation Vorlage für dieses Tutorial erstellt die folgenden Ressourcen in Ihrem Konto:

Wichtig

Wenn Sie einen Stack aus dieser Vorlage erstellen, werden Ihnen die verwendeten Amazon-Ressourcen in Rechnung gestellt.

  • AWS::DynamoDB::Table: Eine DynamoDB-Tabelle, die als Ereignisquelle für die Pipe dient.

  • AWS::SQS::Queue: Eine Amazon SQS-Warteschlange, die als Ziel für die Ereignisse dient, die durch die Pipe fließen.

  • AWS::IAM::Role: Eine IAM-Ausführungsrolle, die Berechtigungen für den EventBridge Pipes-Service in Ihrem Konto gewährt.

  • AWS::Pipes::Pipe: Die Pipe, die die DynamoDB-Tabelle mit der Amazon SQS-Warteschlange verbindet.

Berechtigungen

Die Vorlage enthält eine AWS::IAM::Role Ressource, die eine Ausführungsrolle darstellt. Diese Rolle gewährt dem EventBridge Pipes-Dienst (pipes.amazonaws.com) die folgenden Berechtigungen in Ihrem Konto.

Die folgenden Berechtigungen beziehen sich auf die DynamoDB-Tabelle und den Stream, die die Vorlage als Ereignisquelle für die Pipe erstellt:

  • dynamodb:DescribeStream

  • dynamodb:GetRecords

  • dynamodb:GetShardIterator

  • dynamodb:ListStreams

Die folgende Berechtigung bezieht sich auf die Amazon SQS-Warteschlange, die der Stack als Ziel der Pipe erstellt:

  • sqs:SendMessage

CloudFormation Vorlage

Speichern Sie den folgenden JSON- oder YAML-Code als separate Datei, um ihn als CloudFormation Vorlage für dieses Tutorial zu verwenden.

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