◾️はじめに
s3 ファイル到達の監視を考える
目次
【1】やりたいこと 【2】実装案 1)EventBridgeに関して 【3】案1:S3イベント通知→Lambda→CloudWatch Logs→Datadogで実装 1)Lambda を作成する 2)S3イベント通知を設定する
【1】やりたいこと
* AWS s3 にファイルが到達したかを datadog で 監視する => put / delete イベントを拾う => s3 bucket name および key (path) を表示 => ファイルサイズも表示
【2】実装案
案1:S3イベント通知→Lambda→CloudWatch Logs→Datadog 案2:S3イベント通知→EventBridge→CloudWatch Logs→Datadog 案3:S3イベント通知→EventBridge→Datadog などなど 他にもCloudTrailを利用した案などいろいろ考えられる、、、
1)EventBridgeに関して
* 以下のサイトによると、 大きいサイズのファイルの場合、イベントが発火しないケースもあるらしい => まずは、案1で検討を進めてみる
https://qiita.com/NaotoFushimi/items/cb78ca79575cf42b4dfe
https://stackoverflow.com/questions/67074187/eventbridge-responseelements-too-large
【3】案1:S3イベント通知→Lambda→CloudWatch Logs→Datadogで実装
* 2)以降は、Teraformで書きたい、、、 => Teraformコードについては、以下の関連記事を参照。
Terraform ~ s3 ファイル到達の監視を考える ~
https://dk521123.hatenablog.com/entry/2025/09/18/003116
1)Lambda を作成する
* 以下で行ったサンプルを少し改変
https://dk521123.hatenablog.com/entry/2024/05/23/162229
サンプル
import logging import json logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): try: for record in event['Records']: # Step1: Get the object from the event event_name = record['eventName'] s3_bucket = record['s3']['bucket']['name'] s3_key = record['s3']['object']['key'] file_size = record['s3']['object'].get('size', 0) # Step2: Generate payload to send it to datadog payload = { "event_type": event_name, "s3_path": f"s3://{s3_bucket}/{s3_key}", "file_size": file_size } # Step3: Output content = json.dumps(payload) logger.info(f"[S3_MONITORING] {content}") except Exception as ex: logger.error(f"[S3_MONITORING] {ex}") raise ex return { "statusCode": 200, "body": { "result": "The process is successful!!" } }
2)S3イベント通知を設定する
* 対象s3バケットに対して、S3イベント通知を設定する => S3イベント "s3:ObjectCreated:*", "s3:ObjectRemoved:*" を拾う
イベント通知タイプ
* 以下の公式ドキュメント参照
関連記事
datadog ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2024/03/30/004746
datadog ~ integration ~
https://dk521123.hatenablog.com/entry/2025/04/11/003254
Lambda ~ Python / S3トリガー ~
https://dk521123.hatenablog.com/entry/2024/05/23/162229
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ AWS Lambda / 入門編 ~
https://dk521123.hatenablog.com/entry/2024/05/30/010920
Terraform ~ AWS Lambda / あれこれ ~
https://dk521123.hatenablog.com/entry/2024/05/31/005406
Terraform ~ s3 ファイル到達の監視を考える ~
https://dk521123.hatenablog.com/entry/2025/09/18/003116