はじめに
こんにちは!NX開発推進部 次世代プロダクト開発 Gエンジニアをしている徐です。 バックエンドの開発を主に行っております。
好きなプログラミング言語はPythonで、お気に入りのAmazon Web Services(以下、AWS)サービスはAWS Lambdaになります。
今回は、S3イベントで実現するECSバッチ起動についてご紹介します。
背景・課題
現在、開発に携わっているシステムでは、CSVファイルをトリガーとしてECSを起動する仕組みを、一部のバッチ処理で採用しています。しかし、実装当時はS3のPutObjectイベントなど、オブジェクトレベルのイベントを直接キャプチャすることができませんでした。そのため、CloudTrailの証跡を利用してオブジェクトレベルのAPI操作を記録し、そのログをEventBridgeでキャプチャする形で対応していました。
ただし、CloudTrailのトレイルには最大5個までという制限があり、同様の仕組みを利用するECSバッチが増えた場合に対応が困難になるという課題がありました。また、現在ではEventBridgeがS3のオブジェクトレベルイベントを直接キャプチャできるようになったため、S3と直接連携する形での改善を進めていきたいと考えています。
内容に関して
本記事は、AWSの利用経験がある程度ある方を対象としています。記事内では、仕組みの変更点に重点を置いて解説しますが、全ての構築手順や関連AWSサービスの詳細については割愛しています。
内容や手順については、2024年11月15日時点の情報を基に記載しています。また、AWSのアップデートによりUIや仕様が変更になる可能性がありますので、添付した画像などの内容が古くなることもご了承ください。
目次
1.改善前のアーキテクチャ図 2.変更点・改善点 3.CloudFormationのテンプレートサンプル 4.最後に
1.改善前のアーキテクチャ図

S3→CloudTrail→EventBridge→ECS
S3バケット内の特定のパス以下にファイルが作成されたことをトリガーとして、ECSを実行する構成を構築していました。この構成では、EventBridgeを介してS3のイベント(PutObject)を検知します。CloudTrailの証跡を利用してオブジェクトレベルのAPI操作をログに記録し、そのログをEventBridgeでキャプチャする必要がありました。
2.変更点・改善点
- S3でAWS EventBridgeの「通知」設定をオンにする

S3→CloudTrail→EventBridge→ECSの構成からCloudTrailを削除

3.CloudFormationのテンプレートサンプル
1.S3にAWS EventBridgeの「通知」設定をオンにする設定を追加
徐杉