開始方法: Amazon EventBridge パイプを作成する
パイプとその機能に慣れるために、CloudFormation テンプレートを使用して EventBridge パイプと関連するコンポーネントを設定します。その後、さまざまなパイプ機能を確認できるようになります。
テンプレートを使用すると、DynamoDB テーブルから Amazon SQS キューにストリームを接続する EventBridge パイプを作成できます。パイプは、データベーステーブルでレコードが作成または変更されるたびに、結果のイベントをキューに送信します。
デプロイされたパイプは、以下で構成されます。
パイプのソースとなる DynamoDB テーブル (およびストリーム) と、ターゲットとなる Amazon SQS キュー。
DynamoDB テーブルと Amazon SQS キューにアクセスするために必要なアクセス許可を EventBridge に付与する実行ロール。
パイプ本体。テーブル項目の作成 (挿入) または変更時に生成されたイベントのみを選択するイベントフィルターが含まれています。
テンプレートの具体的な技術的詳細については、「テンプレートの詳細」を参照してください。
CloudFormation を使用したパイプの作成
パイプとその関連リソースを作成するには、CloudFormation テンプレートを作成し、それを使用してサンプルパイプおよびソースとターゲットが揃ったスタックを作成します。
重要
このテンプレートからスタックを作成した場合、Amazon リソースに対する料金が発生します。
まず、CloudFormation テンプレートを作成します。
テンプレート セクションで、[JSON] または [YAML] タブのコピーアイコンをクリックして、テンプレートの内容をコピーします。
テンプレートの内容を新しいファイルに貼り付けます。
ファイルをローカルに保存します。
次に、保存したテンプレートを使用して CloudFormation スタックをプロビジョニングします。
クラウドフォーメーション コンソール のhttps://console.aws.amazon.com/cloudformation/
開きます: [スタック] ページでは、[スタックの作成] メニューで [新しいリソースを使用 (標準)] を選択します。
テンプレートを指定します。
[前提条件] で、[既存のテンプレートを選択] を選択します。
[テンプレートの指定] で、[テンプレートファイルのアップロード] を選択します。
[ファイルを選択] を選択し、テンプレートファイルに移動して選択します。
[次へ] を選択します。
スタックの詳細を指定します:
スタック名を入力します。
パラメータについては、デフォルト値を受け入れるか独自の値を入力します。
[次へ] を選択します。
スタックオプションを設定します。
[スタック障害オプション] で、[新しく作成されたリソースをすべて削除] を選択します。
注記
このオプションを選択すると、スタックの作成に失敗した場合でも削除ポリシーで保持するように指定されているリソースに対して、課金される可能性を防ぐことができます。詳細については、「CloudFormation ユーザーガイド」の「
DeletionPolicy属性」を参照してください。他はすべて、デフォルト値を受け入れます。
[機能] では、チェックボックスをオンにして、CloudFormation によってアカウントに IAM リソースが作成される場合があることを承認します。
[次へ] を選択します。
スタックの詳細を確認して、[送信] を選択します。
CloudFormation を使用してスタックを作成する (AWS CLI)
スタックは、AWS CLI を使用して作成することもできます。
-
create-stackコマンドを実行します。デフォルトのテンプレートパラメータ値を受け入れ、スタック名を指定します。
template-bodyパラメータを使用してテンプレートコンテンツを渡すか、template-urlで URL の場所を指定します。aws cloudformation create-stack \ --stack-nameeventbridge-rule-tutorial\ --template-bodytemplate-contents\ --capabilities CAPABILITY_IAM1 つまたは複数のテンプレートパラメータのデフォルト値を上書きします。例:
aws cloudformation create-stack \ --stack-nameeventbridge-rule-tutorial\ --template-bodytemplate-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 はスタックを作成します。スタックの作成が完了すると、スタックリソースを使用する準備が整います。スタックの詳細ページの [リソース] タブを使用して、アカウントにプロビジョニングされたリソースを表示できます。
パイプ機能の確認
パイプが作成されたら、EventBridge コンソールを使用して、パイプの動作とテストイベントの配信を監視できます。
https://console.aws.amazon.com/events/home?#/pipes
で、EventBridge コンソールを開きます。 -
作成したパイプを選択します。
パイプの詳細ページの [パイプコンポーネント] セクションには、パイプを構成するリソースが表示されます。またこのページには、各コンポーネントの詳細を示すタブも表示されます。
パイプ用に作成した実行ロールは、[設定] タブの [アクセス許可] セクションにあります。
パイプフィルターの検証
パイプの動作をテストする前に、ターゲットに送信するイベントを制御するために指定したフィルターを確認しましょう。パイプは、フィルター条件に一致するイベントのみをターゲットに送信します。対象外のイベントはすべて破棄されます。この場合、テーブルエントリの作成または変更時に生成されたイベントのみが Amazon SQS キューに送信されるようにします。
パイプの詳細ページの [パイプコンポーネント] で、[フィルタリング] タブを選択します。
eventNameがINSERTまたはMODIFYに設定されているイベントのみを選択するフィルターが含まれています。{ "eventName": ["INSERT", "MODIFY"] }
パイプを介したイベントの送信
次に、パイプソースでイベントを生成して、パイプのフィルタリングと配信が正常に動作していることをテストします。このテストを行うには、パイプソースとして指定した DynamoDB テーブルで項目を作成および編集します。
パイプの詳細ページの [パイプコンポーネント] で、[ソース] タブを選択します。
[ソース] で、DynamoDB ストリーム名を選択します。
この操作で、DynamoDB コンソールが別のウィンドウで開き、ソーステーブルの詳細が表示されます。
[テーブルアイテムの探索] を選択します。
-
テーブルに項目を作成して
INSERTイベントを生成します。[項目を作成] を選択します。
[アルバム] 属性と [アーティスト] 属性の値を追加します。
[項目を作成] を選択します。
項目を編集して
DELETEとINSERTのイベントを生成します。リストから項目を選択し、[アクション] メニューから [項目の編集] を選択します。
[アルバム] または [アーティスト] 属性に新しい値を入力します。
項目キーの値の変更確認チェックボックスをオンにし、[項目を再作成] を選択します。
この操作で、項目が削除および再作成され、
DELETEイベントと新しいINSERTイベントが生成されます。
項目に属性を追加して
MODIFYイベントを生成します。リストから項目を選択し、[アクション] メニューから [項目の編集] を選択します。
[新しい属性を追加] メニューから、[数値] を選択します。
属性名に [年] と入力し、属性の値を入力します。[保存して閉じる] を選択します。
パイプを介したイベント配信の確認
最後に、DynamoDB でテーブル項目を作成および編集することで生成したイベントを、パイプが正常にフィルタリングおよび配信したことを確認します。
パイプの詳細ページの [パイプコンポーネント] で、[ターゲット] タブを選択します。
[ターゲット] で、Amazon SQS キュー名を選択します。
この操作で、Amazon SQS コンソールが別のウィンドウで開き、ターゲットキューの詳細が表示されます。
[メッセージの送信と受信] を選択します。
[メッセージを受信] で、[メッセージのポーリング] を選択します。
Amazon SQS が、受信したメッセージをキューにロードします。個々のメッセージをクリックすると、その詳細が表示されます。
キューには 3 つのイベントメッセージがあります。
INSERTタイプが 2 つあります。1 つはテーブル項目を最初に作成したときに生成されます。もう 1 つは、キー値を変更して項目を再作成したときに生成されます。MODIFYタイプ が 1 つあります。これはテーブル項目に属性を追加したときに生成されます。
キー値を変更してテーブル項目を削除および再作成したときにイベントメッセージが生成されましたが、キューには
DELETEタイプのイベントメッセージがないことに注意してください。指定したパイプフィルターはINSERTとMODIFYのみ選択するため、パイプはDELETEイベントをキューに配信せずに除外します。
クリーンアップ: リソースの削除
最後のステップとして、スタックとそれに含まれるリソースを削除します。
重要
スタックに含まれる Amazon リソースが存在する限り料金が発生するためです。
クラウドフォーメーション コンソール のhttps://console.aws.amazon.com/cloudformation/
開きます: -
[スタック] ページで、テンプレートから作成されたスタックを選択し、[削除] を選択してから、[削除] で確定します。
CloudFormation は、スタックとそれに含まれるすべてのリソースの削除を開始します。
CloudFormation テンプレートファイルの詳細
このテンプレートは、アカウントにリソースを作成し、アクセス許可を付与します。
リソース
このチュートリアルで使用する CloudFormation テンプレートでは、以下のリソースがアカウントに作成されます。
重要
このテンプレートからスタックを作成した場合、Amazon リソースに対する料金が発生します。
AWS::DynamoDB::Table: パイプのイベントソースとして機能する DynamoDB テーブル。AWS::SQS::Queue: パイプを流れるイベントのターゲットとして機能する Amazon SQS キュー。AWS::IAM::Role: アカウントの EventBridge Pipes サービスにアクセス許可を付与する IAM 実行ロール。AWS::Pipes::Pipe: DynamoDB テーブルを Amazon SQS キューに接続するパイプ。
アクセス許可
テンプレートには、実行ロールを表す AWS::IAM::Role リソースが含まれています。このロールは、EventBridge Pipes サービス (pipes.amazonaws.com) にアカウント内の次のアクセス許可を付与します。
次のアクセス許可は、DynamoDB テーブルと、テンプレートがパイプのイベントソースとして作成するストリームに限定されます。
dynamodb:DescribeStreamdynamodb:GetRecordsdynamodb:GetShardIteratordynamodb:ListStreams
次のアクセス許可は、スタックがパイプのターゲットとして作成する Amazon SQS キューに限定されます。
sqs:SendMessage
CloudFormation テンプレート
次の JSON または YAML コードを別のファイルとして保存し、このチュートリアルの CloudFormation テンプレートとして使用します。