AWS Event-Driven Workshopをやってみた

2021/11/18に公開

作成背景

もくもく会のアウトプットです。

https://jaws-ug-kyushu.doorkeeper.jp/events/129834

教材

https://event-driven-architecture.workshop.aws/

実施背景

イベント駆動は聞いたことも、AW S3 PUT時にLambdaを起動して他サービスに連携などは実装経験ありますが、
EventBridgeを利用して実装した経験がなかったのでいい機会だと思って実施します。

実際にやってみた

環境作成

以下のリージョンについては、CloudFormationのテンプレートが用意されています。

  • US East (N. Virginia) us-east-1
  • US West (Oregon) us-west-2
  • Europe (Ireland) eu-west-1
  • Europe (Frankfurt) eu-central-1
  • Asia Pacific (Singapore) ap-southeast-1
  • Asia Pacific (Sydney) ap-southeast-2
  • Asia Pacific (Tokyo) ap-northeast-1

実行すると、このWorkshopで利用するEvent発火用の専用ページとユーザ、パスワードがCfnから出力されます。

CFN_output

EventBridge上でRule定義

EvetBridge_Rule

EventBridgeに対してEvent Publish

CFN_output

{
    "version": "0",
    "id": "4439abea-1826-0bfc-5e6c-a30c34c12b4c",
    "detail-type": "Order Notification",
    "source": "com.aws.orders",
    "account": "******",
    "time": "2021-11-18T12:27:44Z",
    "region": "ap-northeast-1",
    "resources": [],
    "detail": {
        "category": "lab-supplies",
        "value": 415,
        "location": "eu-west"
    }
}

環境のクリーンナップ

CloudFormationでStackをDeleteすることでネスト生成されたリソースも合わせて削除します。
CFN_delete

まとめ

まずはベーシックなイベントを受け取って、CloudWatch Logsへ通知するRulesを作成しました。
また、他のAWSワークショップの多くは手を動かすためのリソースを予め作るパターンはありますが、
今回のように手を動かして、イベントを発火するための画面を別に作成するパターンは個人的に初めてでした。

今回1時間弱で実施してみるということもあり、まずはシンプルに実装してみました。

このワークショップはこのあとKinesis Firehoseにも通知をS3へPutする仕組みを追加する手順が追加されていくので、
また後日続きを実施しようと思います。

なお、CloudFormationで作成しているためワークショップを終了したあとはスタックを削除することでリソースも一斉に削除されるので、
削除漏れは起きづらいこともいいですね。

Discussion