イベントドリブンのアプリケーションの実装が簡単に!「EventBridge Pipes」
まずはEventBridge Pipesを紹介します。
EventBridge Pipesは名前からも分かる通り、イベントを通じてAWSサービスをさまざまに連携できるサービス「EventBridge」の新機能で、イベントデータの受信を契機にどのような処理を実行させるかをGUIで設定することができます。
設定項目は、Source、Filtering(オプション)、Enrichment(オプション)、Targetの4つで、Sourceでは受信するイベントデータの種類を選択し、Filteringを設定することでフィルター条件に一致するものだけをEnrichmentやTargetに送信することができます。EnrichmentではSourceで受信したイベントデータの拡張(データの変換や追加)を行うことができ、最後にTargetでデータの送信先を指定します。
EventBridge Pipesの各設定項目で利用可能なリソースの詳細はAmazon EventBridge Pipesのドキュメントをご参照ください。
このアップデートで嬉しい点は、イベントドリブンで実行する処理のほぼすべての設定がAWSコンソールから行えるようになったことです。
例えば、「DynamoDBに特定のデータが書き込まれたら、イベントデータにデータを追加して、CloudWatch Logsに出力する」というシナリオがあった場合、これまでは、フィルタリング~CloudWatch Logsへ転送までの処理をLambdaで一生懸命書く必要がありましたが、EventBridge Pipesを利用することでほとんどLambdaを書く必要がなくなりました。
それでは実際に、上記シナリオのEventBridge Pipesの設定を見ていきましょう。
まずは、Sourceを設定します。ソースはDyanamoDBを選択し、DynamoDBストリームで事前に作成したものを指定します。
![Sourceの設定](http://cz-cdn.shoeisha.jp/static/images/article/17487/17473_001.png)
次に、Filteringを設定します。ここでは、price=150のイベントデータのみを処理するイベントパターンを作成します。
![Filteringの設定](http://cz-cdn.shoeisha.jp/static/images/article/17487/17473_002.png)
そして、Enrichmentでデータを追加処理を行うLambdaを指定します。
Lambdaでは、イベントデータにlambda_action:OK
を追加する処理を行います。
import json def lambda_handler(event, context): event_json = event[0] event_json["lambda_action"] = "OK" return event_json
![Enrichmentの設定](http://cz-cdn.shoeisha.jp/static/images/article/17487/17473_003.png)
最後に、Targetを設定します。ターゲットサービスはCloudWatch Logsを選択し、ロググループではロググループ名を指定します。
![Targetの設定](http://cz-cdn.shoeisha.jp/static/images/article/17487/17473_004.png)
以上でEventBridge Pipesの設定は完了です。
動作確認のため、DyanamoDBにデータを追加したところ、CloudWatch Logsにイベントデータが出力されていることが確認できました。
![CloudWatch Logsとの連携が確認できた](http://cz-cdn.shoeisha.jp/static/images/article/17487/17473_005.png)
実際に試してみて感じたのは、EventBridgeの設定がとても簡単ということでした。
コンソールも直感的でわかりやすく、プルダウンで選択していくだけで一連の処理を実装することができ、初学者でもかなり理解しやすいと感じました。
EnrichmentでLambdaを実行させる場合は、ある程度Lambdaの作り込みが必要だと思いますが、EventBridge Pipesの設定のみであれば、5分程で設定できてしまいます。
これからはEventBridge Pipesを活用して、イベントドリブンアプリケーションの構築を楽にしていきましょう!