チュートリアル: ソースイベントをフィルタリングする EventBridge パイプを作成する - Amazon EventBridge

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: ソースイベントをフィルタリングする EventBridge パイプを作成する

このチュートリアルでは、DynamoDB ストリームソースを Amazon SQS キューターゲットに接続するパイプを作成します。これには、キューに配信するイベントをフィルタリングするときに使用するパイプのイベントパターンを作成することも含まれます。次に、パイプをテストして、必要なイベントだけが配信されることを確認します。

前提条件: ソースとターゲットを作成する

パイプを作成する前に、パイプを接続する先のソースとターゲットを作成する必要があります。この場合、Amazon DynamoDB データストリームがパイプのソースとなり、Amazon SQS キューがパイプのターゲットとなります。

このステップを簡素化するために、 AWS CloudFormation を使用してソースリソースとターゲットリソースをデプロイできます。そのためには、以下のリソースを定義する CloudFormation テンプレートを作成します。

  • パイプのソース

    Amazon DynamoDB テーブル内の項目の変更に関する情報の順序付けされたフローを提供するストリームが有効になっている、pipe-tutorial-source という名前の DynamoDB テーブル。

  • パイプのターゲット

    パイプからイベントの DynamoDB ストリームを受信するための pipe-tutorial-target という名前の Amazon SQS キュー。

パイプリソースをプロビジョニングするための CloudFormation テンプレートを作成するには
  1. 以下の「AWS CloudFormation 前提条件を生成するための テンプレート 」セクションにある JSON テンプレートテキストをコピーします。

  2. テンプレートを JSON ファイル (例: ~/pipe-tutorial-resources.json) として保存します。

次に、作成したテンプレートファイルを使用して CloudFormation スタックをプロビジョニングします。

注記

CloudFormation スタックを作成すると、プロビジョニングする AWS リソースに対して課金されます。

CLI AWS を使用してチュートリアルの前提条件をプロビジョニングする
  • 次の CLI コマンドを実行します。ここで、--template-body はテンプレートファイルの場所を指定します。

    aws cloudformation create-stack --stack-name pipe-tuturial-resources --template-body file://~/pipe-tutorial-resources.json
CloudFormation コンソールを使用してチュートリアルの前提条件をプロビジョニングする
  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  2. [スタック][スタックを作成][新しいリソースを使用 (標準)] の順に選択します。

    CloudFormation は、[スタックを作成] ウィザードを表示します。

  3. [前提条件 − テンプレートの準備] で、デフォルトの [テンプレートの準備完了] を選択したままにします。

  4. [テンプレートを指定] で、[テンプレートファイルをアップロード] を選択し、ファイルを選択して [次へ] を選択します。

  5. スタックと、プロビジョニングするリソースを設定します。

    • [スタック名] に「pipe-tuturial-resources」と入力します。

    • [パラメータ] で、DynamoDB テーブルと Amazon SQS キューの名前をデフォルトのままにします。

    • [次へ] をクリックします。

  6. [次へ] を選択し、[送信] を選択します。

    CloudFormation はスタックを作成し、テンプレートで定義されたリソースをプロビジョニングします。

CloudFormation の詳細については、AWS CloudFormation 「 ユーザーガイド」の「What is AWS CloudFormation?」を参照してください。

ステップ 1: パイプを作成する

パイプのソースとターゲットをプロビジョニングしたら、2 つのサービスを接続するパイプを作成できます。

EventBridge コンソールを使用してパイプを作成する
  1. Amazon EventBridge コンソールの https://console.aws.amazon.com/events/ を開いてください。

  2. ナビゲーションペインで、[パイプ] を選択します。

  3. [パイプを作成] を選択します。

  4. [名前] で、パイプ名を「pipe-tutorial」とします。

  5. DynamoDB データストリームソースを指定します。

    1. [詳細][ソース] で、[DynamoDB データストリーム] を選択します。

      EventBridge は、DynamoDB 固有のソース構成設定を表示します。

    2. [DynamoDB ストリーム] で、[pipe-tutorial-source] を選択します。

      [開始位置] は、デフォルトの Latest に設定したままにします。

    3. [次へ] をクリックします。

  6. イベントパターンを指定してテストし、イベントをフィルタリングします。

    フィルタリングにより、パイプからエンリッチメントまたはターゲットに送信するイベントを制御できます。パイプは、イベントパターンに一致するイベントのみを、エンリッチメントまたはターゲットに送信します。

    詳細については、「Amazon EventBridge Pipes フィルタリング」を参照してください。

    注記

    エンリッチメントまたはターゲットに送信されたイベントにのみ課金されます。

    1. [サンプルイベント - オプション] で、[AWS イベント] を選択したままにし、[DynamoDB ストリームサンプルイベント 1] が選択されていることを確認します。

      これは、イベントパターンをテストするために使用するサンプルイベントです。

    2. [イベントパターン] に、次のイベントパターンを入力します。

      { "eventName": ["INSERT", "MODIFY"] }
    3. [パターンをテスト] を選択します。

      EventBridge は、サンプルイベントがイベントパターンと一致するというメッセージを表示します。これは、サンプルイベントの eventName の値が INSERT であるためです。

    4. [次へ] をクリックします。

  7. [次へ] を選択して、エンリッチメントの指定をスキップします。

    この例では、エンリッチメントを選択しません。エンリッチメントを使用すると、ソースからターゲットにデータを送信する前に、データを強化するサービスを選択できます。詳細については、「Amazon EventBridge Pipes のイベントエンリッチメント」を参照してください。

  8. Amazon SQS キューをパイプのターゲットとして指定します。

    1. [詳細][ターゲットサービス] で、[Amazon SQS キュー] を選択します。

    2. [キュー] で、[pipe-tutorial-target] を選択します。

    3. [ターゲット入力トランスフォーマー] セクションは空白のままにしておきます。

      詳細については、「Amazon EventBridge Pipes の入力変換」を参照してください。

  9. [パイプを作成] を選択します。

    EventBridge はパイプを作成し、パイプの詳細ページを表示します。パイプのステータスが Running に更新されると、パイプの準備は完了です。

ステップ 2: パイプがイベントをフィルタリングすることを確認する

パイプは設定済みでも、まだテーブルからイベントを受信していません。

パイプをテストするには、DynamoDB テーブルのエントリを更新します。更新するたびに、DynamoDB ストリームがパイプに送信するイベントが生成されます。指定したイベントパターンと一致するものもあれば、一致しないものもあります。次に Amazon SQS キューを調べて、パイプがイベントパターンに一致するイベントのみを配信したことを確認できます。

テーブル項目を更新してイベントを生成する
  1. DynamoDB コンソール (https://console.aws.amazon.com/dynamodb/) を開きます。

  2. 左のナビゲーションで、[テーブル] を選択します。pipe-tutorial-source テーブルを選択します。

    DynamoDB は pipe-tutorial-source のテーブル詳細ページを表示します。

  3. [テーブル項目の探索] を選択し、[項目を作成] を選択します。

    DynamoDB は [項目を作成] ページを表示します。

  4. [属性] で、新しいテーブル項目を作成します。

    1. [アルバム] に「Album A」と入力します。

    2. [アーティスト] に「Artist A」と入力します。

    3. [項目を作成] を選択します。

  5. テーブル項目を更新します。

    1. [返された項目][アルバム A] を選択します。

    2. [新しい属性を追加]] を選択し、[文字列] を選択します。

    3. Song の新しい値として「Song A」と入力します。

    4. [変更を保存] を選択します。

  6. テーブル項目を削除します。

    1. [返された項目] で、[アルバム A] をオンにします。

    2. [アクション] メニューから、[項目を削除] を選択します。

テーブル項目を 3 回更新しました。これにより、DynamoDB データストリームに次の 3 つのイベントが生成されます。

  • 項目を作成したときの INSERT イベント。

  • 項目に属性を追加したときの MODIFY イベント。

  • 項目を削除したときの REMOVE イベント。

ただし、パイプに指定したイベントパターンにより、INSERT または MODIFY 以外のイベントは除外されるはずです。次に、パイプが予期したイベントをキューに配信したことを確認します。

予期したイベントがキューに配信されたことを確認する
  1. Amazon SQS コンソール (https://console.aws.amazon.com/sqs/) を開きます。

  2. pipe-tutorial-target キューを選択します。

    Amazon SQS は、キューの詳細ページを表示します。

  3. [メッセージを送受信] を選択し、[メッセージを受信][メッセージをポーリング] を選択します。

    キューはパイプをポーリングし、受信したイベントを一覧表示します。

  4. イベント名を選択すると、配信されたイベント JSON が表示されます。

キューには 2 つのイベントがあるはずです。1 つは eventNameINSERT、もう 1 つは eventNameMODIFY です。ただし、パイプはテーブル項目を削除するためのイベントは配信しませんでした。このイベントは eventNameREMOVE であり、パイプで指定したイベントパターンと一致しないためです。

ステップ 3: リソースをクリーンアップする

まず、パイプ自体を削除します。

EventBridge コンソールを使用してパイプを削除する
  1. Amazon EventBridge コンソールの https://console.aws.amazon.com/events/ を開いてください。

  2. ナビゲーションペインで、[パイプ] を選択します。

  3. pipe-tutorial パイプを選択し、[削除] を選択します。

次に、CloudFormation スタックを削除して、そのスタック内でプロビジョニングされたリソースの継続的な使用に対して請求されないようにします。

CLI AWS を使用してチュートリアルの前提条件を削除する
  • 次の CLI コマンドを実行します。ここで、--stack-name はスタックの名前を指定します。

    aws cloudformation delete-stack --stack-name pipe-tuturial-resources
AWS CloudFormation コンソールを使用してチュートリアルの前提条件を削除する
  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  2. [スタック] ページで、スタックを選択して [削除] を選択します。

  3. [削除] を選択して削除を確定します。

AWS CloudFormation 前提条件を生成するための テンプレート

次の JSON を使用して、このチュートリアルに必要なソースリソースとターゲットリソースをプロビジョニングするための CloudFormation テンプレートを作成します。

{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Provisions resources to use with the EventBridge Pipes tutorial. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "SourceTableName" : { "Type" : "String", "Default" : "pipe-tutorial-source", "Description" : "Specify the name of the table to provision as the pipe source, or accept the default." }, "TargetQueueName" : { "Type" : "String", "Default" : "pipe-tutorial-target", "Description" : "Specify the name of the queue to provision as the pipe target, or accept the default." } }, "Resources": { "PipeTutorialSourceDynamoDBTable": { "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" } } }, "PipeTutorialTargetQueue": { "Type": "AWS::SQS::Queue", "Properties": { "QueueName": { "Ref" : "TargetQueueName" } } } } }