🌐

新しくリリースされたEvent Bridge PipesでSQSとStep Functionsを連携してみる

2022/12/04に公開

re:Invent 2022で発表されたEvent Bridge Pipesを触ってみたので記事に残します。

Event Bridge Pipesが何か、という詳細な説明は、クラスメソッドさんの記事など参照ください。

https://dev.classmethod.jp/articles/amazon-eventbridge-pipes-release

簡単に言うと、以下の順に設定することで、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