ホームページ >ウェブフロントエンド >jsチュートリアル >Lambda を使用して EventBridge でイベントをスケジュールする

Lambda を使用して EventBridge でイベントをスケジュールする

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 01:36:11368ブラウズ

Schedule Events in EventBridge with Lambda

このブログ投稿では、AWS EventBridge Scheduler と AWS Lambda を使用してイベントをスケジュールする方法を説明します。この方法は効率的でスケーラブルであり、アプリケーションが個々の EventBridge ルールを混乱させることなく、スケジュールされた複数のイベントを処理できるようになります。飛び込んでみましょう!

AWS EventBridge とは何ですか?

AWS EventBridge は、独自のアプリケーション、統合された Software-as-a-Service (SaaS) アプリケーション、および AWS サービスからのデータを使用してアプリケーションを簡単に接続できるサーバーレス イベント バス サービスです。 EventBridge は、イベント ソースからリアルタイム データのストリームを配信し、そのデータを AWS Lambda、Amazon SNS などのターゲットにルーティングします。

AWSラムダとは何ですか?

AWS Lambda は、サーバーのプロビジョニングや管理を行わずにコードを実行できるサーバーレス コンピューティング サービスです。 S3、DynamoDB、EventBridge などの他の AWS サービスから Lambda 関数を直接トリガーでき、1 日あたり数件のリクエストから 1 秒あたり数千件まで自動的にスケールできます。

前提条件

始める前に、以下のものがあることを確認してください:

  1. AWS アカウント
  2. Node.js の基礎知識
  3. マシン上に設定された AWS CLI

ステップ 1: AWS 環境のセットアップ

IAM ロールの作成

まず、AWS EventBridge Scheduler が Lambda 関数を呼び出せるようにする IAM ロールを作成する必要があります。

  1. IAM コンソールに移動します: IAM コンソールに移動し、左側のナビゲーション ペインから ロール を選択し、ロールの作成 をクリックします。

  2. 信頼できるエンティティの選択: AWS サービス を選択し、Lambda を選択して、次へ: 権限 をクリックします。

  3. ポリシーのアタッチ: 次の管理ポリシーをアタッチします:

    • AWSLambdaBasicExecutionRole: 基本的な Lambda 実行権限を提供します。
    • AmazonEventBridgeSchedulerFullAccess: EventBridge Scheduler によるスケジュールの管理を許可します。
  4. 確認して作成: ロールの名前 (LambdaExecutionRole など) を指定し、設定を確認して、ロールの作成 をクリックします。

  5. 信頼関係の更新: ロールの作成後、ロールの詳細ページに移動します。 信頼関係 タブで、信頼関係の編集 をクリックします。信頼ポリシーを更新して、scheduler.amazonaws.com サービスを含めます:

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "scheduler.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }

ステップ 2: Lambda 関数の作成

スケジュールされたイベントを処理する Lambda 関数を作成します。

  1. Lambda コンソールに移動します: Lambda コンソールに移動し、関数の作成 をクリックし、最初から作成する を選択します。

  2. Lambda 関数を設定します: 関数名を processScheduledEvent に設定し、ランタイムとして Node.js 16.x を選択し、前に作成した既存のロール (LambdaExecutionRole) を使用します。 関数の作成をクリックします。

  3. 関数コードの追加: デフォルトのコードをイベントを処理するロジックに置き換えます。たとえば、イベントの詳細をログに記録したり、イベント データに基づいて特定のアクションを実行したりできます。

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "scheduler.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
  1. 関数のデプロイ: デプロイ をクリックして変更を保存します。

ステップ 3: イベントのスケジュールを設定する

次に、AWS EventBridge Scheduler を使用してイベントをスケジュールするコードを作成しましょう。

まず、必要な AWS SDK モジュールをインストールします。

   exports.handler = async (event) => {
     const eventDetails = event;

     // Your logic to process the event
     console.log("Processing scheduled event:", eventDetails);

     // Example: Process event
     // processEvent(eventDetails);

     return {
       statusCode: 200,
       body: JSON.stringify('Event processed successfully'),
     };
   };

スケジュール機能を実装する手順の概要は次のとおりです。

イベント詳細の抽出

アプリケーションの入力からイベントの詳細を抽出します。以下に例を示します:

npm install @aws-sdk/client-scheduler @aws-sdk/client-lambda

ISTからUTCへの変換

スケジュールされた時刻を IST (インド標準時) から UTC (協定世界時) に変換します。

const eventDetails = {
  name: "TEST-EVENT-01",
  userId: "USER123",
  eventId: "EVENT-001",
  eventTime: '2024-12-17T18:05:00+05:30' // IST time in ISO format
};

UTC 時刻文字列のフォーマットを設定する

UTC 時刻文字列が EventBridge Scheduler で必要な正しい形式 (yyyy-MM-ddTHH:mm:ssZ) であることを確認してください。

const istTime = new Date(eventDetails.eventTime); // IST time
const utcTime = new Date(istTime.getTime() - 5.5 * 60 * 60 * 1000); // Convert to UTC

EventBridge スケジュールを作成する

AWS SDK を使用して EventBridge スケジュールを作成し、Lambda 関数 ARN をターゲットとして指定し、イベントの詳細を入力として含めます。

const utcString = utcTime.toISOString().split('.')[0] + 'Z';

結論

このブログ投稿では、AWS EventBridge Scheduler と Lambda を使用してスケジュールされたイベントを設定するプロセスについて説明しました。このアプローチにより、アプリケーションは複数のスケジュールされたイベントを効率的かつスケーラブルに処理できるようになります。 AWS の力を利用して、ユーザーエクスペリエンスを向上させ、運用を合理化する堅牢な機能を構築できます。

コーディングを楽しんでください!

以上がLambda を使用して EventBridge でイベントをスケジュールするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。