Erste Schritte: Eine EventBridge Amazon-Pipe erstellen - 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: Eine EventBridge Amazon-Pipe erstellen

Um uns mit Rohren und ihren Funktionen vertraut zu machen, verwenden wir eine AWS CloudFormation Vorlage, um eine EventBridge Leitung und die zugehörigen Komponenten einzurichten. Anschließend können wir uns mit verschiedenen Rohrmerkmalen befassen.

Die Vorlage erstellt eine EventBridge Pipe, die einen Stream aus einer DynamoDB-Tabelle mit einer Amazon SQS 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 SQS-Warteschlange als Ziel.

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

  • Die Pipe selbst, die einen Ereignisfilter enthält, der nur Ereignisse auswählt, die beim Erstellen (Einfügen) oder Ändern eines Tabellenelements generiert werden.

Spezifische technische Details der Vorlage finden Sie unterEinzelheiten zur Vorlage.

Datenbankereignisse werden einem Filter zugeordnet und bei Übereinstimmung an eine Warteschlange gesendet.

Erstellen der Pipe mit AWS CloudFormation

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

Wichtig

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

Die Vorlage erstellen

Erstellen Sie zunächst die CloudFormation Vorlage.

  1. Klicken Sie in Vorlage diesem Abschnitt auf der Registerkarte JSON oder YAML auf das Kopiersymbol, 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.

Erstellen des -Stacks

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

  1. Öffnen Sie die AWS CloudFormation Konsole.

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

  3. Geben Sie die Vorlage an:

    1. Wählen Sie unter Voraussetzung die Option Eine bestehende Vorlage auswählen aus.

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

    3. Wählen Sie Datei auswählen, navigieren Sie zur Vorlagendatei und wählen Sie sie aus.

    4. Wählen Sie Weiter aus.

  4. Geben Sie die Stack-Details an:

    1. Geben Sie einen Stacknamen ein.

    2. Akzeptieren 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 Alle neu erstellten Ressourcen löschen aus.

      Anmerkung

      Wenn Sie diese Option wählen, wird Ihnen möglicherweise verhindert, dass Ihnen Ressourcen in Rechnung gestellt werden, deren Löschrichtlinie vorsieht, dass sie auch dann beibehalten werden, wenn die Stack-Erstellung fehlschlägt. Weitere Informationen finden Sie unter DeletionPolicyAttribut im AWS CloudFormation Benutzerhandbuch.

    2. Akzeptieren Sie alle anderen Standardwerte.

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

    4. Wählen Sie Weiter aus.

  6. Überprüfen Sie die Stack-Details und wählen Sie Senden aus.

AWS CloudFormation erstellt den Stapel. Sobald die Stack-Erstellung abgeschlossen ist, sind die Stack-Ressourcen einsatzbereit. Sie können den Tab Ressourcen auf der Stack-Detailseite verwenden, um die Ressourcen anzuzeigen, die in Ihrem Konto bereitgestellt wurden.

Erkunden Sie die Möglichkeiten von Pipe

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

  1. Die EventBridge Konsole zu https://console.aws.amazon.com/events/Hause öffnen? #/Rohre.

  2. Wählen Sie die Pipe aus, die Sie erstellt haben.

    Auf der Seite mit den Rohrdetails werden im Abschnitt Rohrkomponenten die Ressourcen angezeigt, aus denen das Rohr besteht. Außerdem enthält er Registerkarten mit weiteren Informationen zu den einzelnen Komponenten.

    Auf der Seite mit den Rohrdetails werden Quell-, Filter- und Zielkomponenten für die Leitung grafisch angezeigt.

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

Den Rohrfilter untersuchen

Bevor wir den Pipe-Betrieb testen, untersuchen wir den Filter, den wir angegeben haben, um zu kontrollieren, welche Ereignisse an das Ziel gesendet werden. Die Pipe sendet nur Ereignisse, die den Filterkriterien entsprechen, an das Ziel. Alle anderen Ereignisse werden verworfen. In diesem Fall möchten wir nur, dass Ereignisse, die beim Erstellen oder Ändern von Tabelleneinträgen generiert werden, an die Amazon SQS 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 auf INSERT oder gesetzt eventName 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 korrekt 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 Namen des DynamoDB-Streams aus.

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

  3. Wählen Sie Explore Table Items (Tabellenelemente erkudnen) aus.

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

    1. Wählen Sie Create item (Element erstellen) aus.

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

    3. Wählen Sie Create item (Element erstellen) aus.

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

    1. Wählen Sie das Element aus der Liste aus und klicken Sie im Menü Aktionen auf Element bearbeiten.

    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 Elementschlüssel ändern, und wählen Sie dann Objekt neu erstellen.

      Dies führt dazu, dass das Element gelöscht und anschließend 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 klicken Sie im Menü Aktionen auf Element bearbeiten.

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

    3. Geben Sie als Attributnamen Jahr und dann einen Wert für das Attribut ein. Klicken Sie auf Save and close.

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

Abschließend bestätigen wir, dass die Pipe die Ereignisse, die wir durch das 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 Target den Namen der Amazon SQS SQS-Warteschlange aus.

    Dadurch wird die Amazon SQS 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 empfangene Nachrichten in die Warteschlange. Klicken Sie auf eine einzelne Nachricht, um deren Details zu sehen.

    In der Warteschlange sollten sich drei Ereignismeldungen befinden:

    • Zwei TypenINSERT, 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 durch Ändern eines Schlüsselwerts neu erstellt haben. Der von uns angegebene Pipefilter wählt nur ein INSERT und ausMODIFY, sodass die Pipe das DELETE Ereignis herausgefiltert hat, anstatt es an die Warteschlange weiterzuleiten.

Aufräumen: Ressourcen löschen

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

Wichtig

Ihnen werden die im Stapel enthaltenen Amazon-Ressourcen in Rechnung gestellt, solange sie existieren.

  1. Öffnen Sie die AWS CloudFormation Konsole.

  2. Wählen Sie auf der Seite Stacks den aus der Vorlage erstellten Stack aus, wählen Sie Löschen und 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

Mit der AWS CloudFormation Vorlage für dieses Tutorial werden die folgenden Ressourcen in Ihrem Konto erstellt:

Wichtig

Wenn Sie einen Stack anhand 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 fungiert.

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

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

  • AWS::Pipes::Pipe: Die Pipe, die die DynamoDB-Tabelle mit der Amazon SQS 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, den die Vorlage als Ereignisquelle für die Pipe erstellt:

  • dynamodb:DescribeStream

  • dynamodb:GetRecords

  • dynamodb:GetShardIterator

  • dynamodb:ListStreams

Die folgende Berechtigung ist auf die Amazon SQS SQS-Warteschlange beschränkt, 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" : "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