らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

AWS Lambda で CloudWatch Event からトリガーした場合の event サンプル

AWS Lambda を cron 式で指定時間にトリガーする場合、トリガーには Cloud Watch Event を指定します。 この場合、Lambda のイベントハンドラへ渡される event (JSON オブジェクト) のサンプルは Event Patterns in CloudWatch Events に掲載されています。 実際に CloudWatch Event からトリガーされた場合の event サンプルをメモしておきます。 python-lambda-local からローカル実行する際などにも活用出来ると思います。

サンプルプログラム

event の内容をウォッチする為に以下の Lambda 関数を定義しました。 この Lambda 関数に Cloud Watch Event をトリガーとして定義し、結果を Cloud Watch のロググループから確認します。

import logging
 
logger = logging.getLogger()
logger.setLevel(logging.INFO)
 
def lambda_handler(event, context):
    logger.info(event)

event の実際の例

cloud_watch_event_trigger という名前の CloudWatch Event を新規作成し、このトリガーからサンプルを実行した結果、event は以下の内容になっていました。

{
    "version": "0",
    "id": "f1df7cee-1234-5678-de36-e9ef43c16ad1",
    "detail-type": "Scheduled Event",
    "source": "aws.events",
    "account": "123456789012",
    "time": "2020-02-02T12:51:39Z",
    "region": "ap-northeast-1",
    "resources": [
        "arn:aws:events:ap-northeast-1:123456789012:rule/cloud_watch_event_trigger"
    ],
    "detail": {}
}

予め用意されている Lambda の CloudWatch テストイベント

プリセットされている CloudWatch テストイベントの内容は以下のようになっていました。

{
  "id": "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c",
  "detail-type": "Scheduled Event",
  "source": "aws.events",
  "account": "{{{account-id}}}",
  "time": "1970-01-01T00:00:00Z",
  "region": "ap-northeast-1",
  "resources": [
    "arn:aws:events:ap-northeast-1:123456789012:rule/ExampleRule"
  ],
  "detail": {}
}