メニュー
Amazon CloudWatch Events
ユーザーガイド

チュートリアル: CloudWatch イベント を使用して Lambda 関数をスケジュールする

スケジュールに基づいて AWS Lambda 関数を実行するルールを設定できます。このチュートリアルでは、AWS マネジメントコンソール または AWS CLI を使用してルールを作成する方法について説明します。AWS CLI を使用したいがインストールしていない場合は、AWS Command Line Interface ユーザーガイド を参照してください。

CloudWatch イベント は、スケジュール式で第 2 レベルの精度を提供しません。Cron 式を使用した最小の解決は分です。CloudWatch イベント とターゲットサービスが持つ分散性の特質により、スケジュールされたルールがトリガーされてから、ターゲットサービスがターゲットリソースの実行を優先するまでの遅延は、数秒となる可能性があります。スケジュールされたルールは、その分のうちにトリガーされますが、正確に 0 秒にトリガーされません。

ステップ 1: Lambda 関数を作成する

スケジュールされたイベントのログを記録するラムダ関数を作成します。ルールを作成するときに、この関数を指定します。

Lambda 関数を作成するには

  1. https://console.aws.amazon.com/lambda/ にある AWS Lambda コンソールを開きます。

  2. Lambda を初めて利用する場合は、[Welcome] ページを参照して [Get Started Now] を選択するか、[Create a Lambda function] を選択します。

  3. [Select blueprint] ページで、フィルターに helloを入力し、[hello-world] 設計図を選択します。

  4. [Configure triggers] ページで、[Next] を選択します。

  5. [: Configure function] ページで、以下の作業を行います。

    1. Lambda 関数の名前と説明を入力します。 (たとえば、関数名を「LogScheduledEvent」とします)。

    2. Lambda 関数のサンプルコードを編集します。(例:

      Copy
      'use strict'; exports.handler = (event, context, callback) => { console.log('LogScheduledEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
    3. [Role] で、[Choose an existing role] を選択し、[Existing role] から基本実行ロールを選択します。そうしない場合は、新しい基本的な実行ロールを作成します。

    4. [Next] を選択します。

  6. [Review] ページで、[Create function] を選択します。

ステップ 2: ルールを作成する

Lambda 関数をスケジュールに従って実行するルールを作成します。

コンソールを使用してルールを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインの [Events] を選択します。

  3. [Create rule] を選択します。

  4. [Event Source] で、以下の操作を実行します。

    1. [Schedule] を選択します。

    2. [Fixed rate of] を選択し、スケジュール間隔 (たとえば 5 分) を指定します。

  5. [Targets] で、[Add target] を選択し、[Lambda 関数] を選択します。

  6. [Function] では、作成した Lambda 関数を選択します。

  7. [Configure details] を選択します。

  8. [Rule definition] で、ルールの名前と説明を入力します。

  9. [Create rule] を選択します。

必要に応じて、AWS CLI を使用してルールを作成できます。まず、Lambda 関数を呼び出すためのアクセス権限をルールに付与する必要があります。次にルールを作成し、Lambda 関数をターゲットとして追加できます。

AWS CLI を使用してルールを作成するには

  1. 次の [put-rule] コマンドを使用して、スケジュールに従ってトリガーするルールを作成します。

    Copy
    aws events put-rule \ --name my-scheduled-rule \ --schedule-expression 'rate(5 minutes)'

    このルールがトリガーされると、このルールのターゲットへの入力として機能するイベントを生成します。以下に示しているのは、イベントの例です。

    Copy
    { "version": "0", "id": "53dc4d37-cffa-4f76-80c9-8b7d4a4d2eaa", "detail-type": "Scheduled Event", "source": "aws.events", "account": "123456789012", "time": "2015-10-08T16:53:06Z", "region": "us-east-1", "resources": [ "arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule" ], "detail": {} }
  2. 次の [add-permission] コマンドを使用して、CloudWatch イベント サービスプリンシパル (events.amazonaws.com) や指定された Amazon リソースネーム (ARN) を持つルールに対するスコープ権限を信頼します。

    Copy
    aws lambda add-permission \ --function-name LogScheduledEvent \ --statement-id my-scheduled-event \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule
  3. 次の [put-targets] コマンドを使用して、このルールに作成した Lambda 関数を 5 分ごとに実行するように追加します。

    Copy
    aws events put-targets --rule my-scheduled-rule --targets file://targets.json

    次の内容で、targets.json ファイルを作成します。

    Copy
    [ { "Id": "1", "Arn": "arn:aws:lambda:us-east-1:123456789012:function:LogScheduledEvent" } ]

ステップ 3 : ルールをテストする

Lambda 関数が呼び出されたことを確認できます。

ルールをテストするには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. イベントのメトリクスを表示するには、以下の操作を実行します。

    1. ナビゲーションペインで、[Events]、[Rules] を選択します。

    2. 作成したルールの名前を選択します。

    3. [Show metrics for the rule] を選択します。

  3. Lambda 関数からの出力を表示するには、以下の操作を実行します。

    1. ナビゲーションペインで [Logs] を選択します。

    2. Lambda 関数 (/aws/lambda/function-name) のロググループの名前を選択します。

    3. 起動したインスタンスの関数によって提供されるデータを表示するログのストリーム名を選択します。

  4. (オプション) 終了したら、ルールを無効にすることができます。

    1. ナビゲーションペインで、[Events]、[Rules] を選択します。

    2. ルールを選択し、[Actions]、[Disable] を選択します。

    3. 確認を求められたら、[Disable] を選択します。