AWS Lambda
開発者ガイド

AWS Lambda を Amazon CloudWatch Events に使用する

Amazon CloudWatch イベント は、AWS リソースの状態変化への対応に役立ちます。リソースの状態が変化すると、自動的にイベントがイベントストリームに送信されます。選択したイベントをストリーム内で照合し、AWS Lambda 関数にルーティングしてアクションを実行するためのルールを作成できます。たとえば、AWS Lambda 関数を自動的に呼び出し、EC2 インスタンスまたは AutoScaling グループの状態を記録することができます。

ルールターゲット定義を使用して、Amazon CloudWatch イベントのイベントソースマッピングを維持します。詳細については、『Amazon CloudWatch Events API リファレンス』の「PutTargets」オペレーションを参照してください。

Lambda 関数を作成して、AWS Lambda を定期的なスケジュールで実行するように指示することもできます。固定の間隔を指定する(たとえば、1 時間ごとまたは 15 分ごとに Lambda 関数を実行する)ことも、Cron 式を指定することもできます。スケジュール式の詳細については、「Rate または Cron を使用したスケジュール式」を参照してください。

例 CloudWatch イベント メッセージイベント

{ "account": "123456789012", "region": "us-east-2", "detail": {}, "detail-type": "Scheduled Event", "source": "aws.events", "time": "2019-03-01T01:23:45Z", "id": "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c", "resources": [ "arn:aws:events:us-east-1:123456789012:rule/my-schedule" ] }

この機能は AWS Lambda コンソールまたは AWS CLI を使用して Lambda 関数を作成する場合に使用できます。AWS CLI を使用して設定するには、「スケジュールに基づいて AWS CLI で AWS Lambda 関数を実行する」を参照してください。コンソールはイベントソースとして [CloudWatch イベント] を提供します。Lambda 関数の作成時に、このイベントのソースを選択し、時間間隔を指定します。

関数のアクセス許可を手動で変更した場合は、スケジュールされたイベントに関数へのアクセスを再適用する必要が生じることがあります。これを行うには、次の CLI コマンドを使用します。

$ aws lambda add-permission --function-name my-function\ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --statement-id events-access \ --source-arn arn:aws:events:*:123456789012:rule/*

各 AWS アカウントは、[CloudWatch イベント - スケジュール] ソースタイプの最大 100 個の一意なイベントソースを指定できます。それぞれが、最大 5 つの Lambda 関数のイベントソースになります。つまり、AWS アカウントで最大 500 のスケジュールで実行する Lambda 関数を使用できます。

コンソールにはまた、[CloudWatch イベント - スケジュール] ソースタイプを使用する設計図 (lambda-canary) が用意されています。この設計図を使用して、Lambda 関数の例を作成し、この機能をテストできます。設計図が提供するサンプルコードは、特定のウェブページの存在およびそのウェブページ内の特定の文字列の存在を確認します。ウェブページまたは文字列が見つからない場合、Lambda 関数はエラーをスローします。