新しくリリースされたEvent Bridge PipesでSQSとStep Functionsを連携してみる
re:Invent 2022で発表されたEvent Bridge Pipesを触ってみたので記事に残します。
Event Bridge Pipesが何か、という詳細な説明は、クラスメソッドさんの記事など参照ください。
簡単に言うと、以下の順に設定することで、Source、Targetとなるサービス間の一連の処理(フィルタリング、プリプロセス)を表現することができます。
Source:イベントを発火するサービスを選択。DynamoDB、SQS、Kinesis Data Streamsなどが対応しています。
Filter:データのフィルタリング処理をjson形式で記述できます。
Enrichment:プリプロセスを行うサービスを選択。Lambda、Step Functions、API Gatewayなどが対応しています。
Target:ターゲットとなるサービスを選択。Step Functions、CloudWatch Logs、Lambda、ECS、API Gatewayなどが対応しています。
(公式より引用)
従来であれば、Filterの箇所はLambda関数など記述する必要がありましたが、Event Birdge Pipesを使うことでその必要はなくなりますし、データソースの種類によらず、一連の処理プロセスを抽象化&一貫して書けるのがこのサービスを使用するメリットだと思います。
触ってみる
SQS(Source)の作成
SourceとなるSQSを作成します。特に設定など変えずに作成。
Step Functions(Target)の作成
TargetとなるStep Functionsを作成します。
メッセージをPassするだけのフローを作成します。Step Functionsを初めて触ったのですが、下記のようにGUIで簡単にフローを作成できるようになっています。
Event Bridge Pipesの設定
ここから本題のEvent Bridge Pipesの設定に入っていきます。
Sourceの設定
先程作成したSQSを選びます。
Filterの設定
以下のような記述でFilterを設定できるようですが、おそらくSQSのメッセージ形式とのアンマッチでうまくいかず、一旦設定せずに先に進みます。(設定方法がわかったら記述します。)
Targetの設定
先程作成したStep Functionsを選びます。
動作確認
SQSの画面に戻り、以下のようなテストメッセージを送信します。
Step Functionsが意図通り動いていることが確認できます。
Discussion