チュートリアル: AWS Lambda 関数 EventBridge のスケジュールされたルールを作成する - Amazon EventBridge

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: AWS Lambda 関数 EventBridge のスケジュールされたルールを作成する

スケジュールに基づいて AWS Lambda 関数を実行するルールを設定できます。このチュートリアルでは、 AWS Management Console または を使用してルール AWS CLI を作成する方法を示します。を使用する AWS CLI が、まだインストールしていない場合は、「 AWS CLI バージョン 2 のインストール、更新、アンインストール」を参照してください。

スケジュールの場合、スケジュール式 EventBridge で 2 番目のレベルの精度を提供しません。cron 式を使用した最小の粒度は 1 分です。 EventBridge とターゲットサービスの分散性により、スケジュールされたルールがトリガーされてからターゲットサービスがターゲットリソースを実行するまでに数秒の遅延が発生する可能性があります。

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

スケジュールされたイベントのログを記録する Lambda 関数を作成します。

Lambda 関数を作成するには
  1. で AWS Lambda コンソールを開きますhttps://console.aws.amazon.com/lambda/

  2. 関数の作成 を選択します。

  3. Author from scratch(製作者を最初から) を選択します。

  4. Lambda 関数の名前と説明を入力します。例えば、関数名を LogScheduledEvent とします。

  5. 残りのオプションはデフォルトのまま、[Create function] (関数の作成) を選択します。

  6. 関数ページの [Code] (コード) タブで、index.js をダブルクリックします。

  7. 既存のコードを以下のコードに置き換えます。

    'use strict'; exports.handler = (event, context, callback) => { console.log('LogScheduledEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
  8. [Deploy‬] (デプロイ) をクリックします。

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

ステップ 1 で作成した Lambda 関数をスケジュールに従って実行するルールを作成します。

コンソールまたは を使用してルール AWS CLI を作成できます。を使用するには AWS CLI、まず Lambda 関数を呼び出すアクセス許可をルールに付与します。次にルールを作成し、Lambda 関数をターゲットとして追加できます。

ルールを作成するには ( コンソール)
  1. で Amazon EventBridge コンソールを開きますhttps://console.aws.amazon.com/events/

  2. ナビゲーションペインで ルール] を選択します。

  3. ルールの作成 を選択します。

  4. ルールの名前と説明を入力します。

    ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

  5. イベントバス] では、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、 AWS のデフォルトのイベントバスを選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。

  6. [Rule type] (ルールタイプ) では、[Schedule] (スケジュール) を選択します。

  7. [次へ] をクリックします。

  8. [Schedule pattern] (スケジュールパターン) については、[A schedule that runs at a regular rate, such as every 10 minutes.] (10 分ごとなど、定期的に実行されるスケジュール。) を選択して、5 を入力し、ドロップダウンリストから [Minutes] (分) を選択します。

  9. [Next] (次へ) を選択します。

  10. [Target types] (ターゲットタイプ) では、AWS [services] (サービス) を選択します。

  11. ターゲットの選択では、ドロップダウンリストから [Lambda function] (Lambda 関数) を選択します。

  12. [Function] (関数) で、[Step 1: Create a Lambda function] (ステップ 1:Lambda 関数を作成する) セクションで作成した Lambda 関数を選択します。この例では、LogScheduledEvent を選択します。

  13. [次へ] をクリックします。

  14. [次へ] をクリックします。

  15. ルールの詳細を確認し、ルールの作成 を選択します。

ルール (AWS CLI) を作成するには
  1. スケジュールに従って実行するルールを作成するには、put-rule コマンドを使用します。

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

    このルールが実行されると、イベントが作成されてターゲットに送信されます。以下に示しているのは、イベントの例です。

    { "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. ルールを実行するアクセス許可を EventBridge サービスプリンシパル (events.amazonaws.com) に付与するには、 add-permission コマンドを使用します。

    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. 次の内容で、targets.json ファイルを作成します。

    [ { "Id": "1", "Arn": "arn:aws:lambda:us-east-1:123456789012:function:LogScheduledEvent" } ]
  4. ステップ 1 で作成した Lambda 関数をルールに追加するには、put-targets コマンドを使用します。

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

ステップ 3: ルールを確認する

ステップ 2 を完了してから少なくとも 5 分待ってから、Lambda 関数が呼び出されたことを確認できます。

Lambda 関数からの出力を表示する
  1. で CloudWatch コンソールを開きますhttps://console.aws.amazon.com/cloudwatch/

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

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

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

ステップ 4: 成功を確認する

CloudWatch ログに Lambda イベントが表示された場合、このチュートリアルは正常に完了しています。イベントが CloudWatch ログにない場合は、ルールが正常に作成されたことを確認することでトラブルシューティングを開始し、ルールが正しい場合は Lambda 関数のコードが正しいことを確認します。

ステップ 5: リソースをクリーンアップする

このチュートリアル用に作成したリソースは、保持しない場合は削除できます。使用しなくなった AWS リソースを削除することで、 AWS アカウントへの不要な課金を防ぐことができます。

EventBridge ルールを削除するには (複数可)
  1. EventBridge コンソールのルールページを開きます。

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

  3. [Delete] (削除) を選択します。

  4. [Delete] (削除) を選択します。

Lambda 関数を削除するには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 作成した関数を選択します。

  3. [Actions] (アクション) で、[Delete] (削除) を選択します。

  4. [削除] を選択します。