ホームページ >ウェブフロントエンド >jsチュートリアル >Lambda を使用して EventBridge でイベントをスケジュールする
このブログ投稿では、AWS EventBridge Scheduler と AWS Lambda を使用してイベントをスケジュールする方法を説明します。この方法は効率的でスケーラブルであり、アプリケーションが個々の EventBridge ルールを混乱させることなく、スケジュールされた複数のイベントを処理できるようになります。飛び込んでみましょう!
AWS EventBridge は、独自のアプリケーション、統合された Software-as-a-Service (SaaS) アプリケーション、および AWS サービスからのデータを使用してアプリケーションを簡単に接続できるサーバーレス イベント バス サービスです。 EventBridge は、イベント ソースからリアルタイム データのストリームを配信し、そのデータを AWS Lambda、Amazon SNS などのターゲットにルーティングします。
AWS Lambda は、サーバーのプロビジョニングや管理を行わずにコードを実行できるサーバーレス コンピューティング サービスです。 S3、DynamoDB、EventBridge などの他の AWS サービスから Lambda 関数を直接トリガーでき、1 日あたり数件のリクエストから 1 秒あたり数千件まで自動的にスケールできます。
始める前に、以下のものがあることを確認してください:
まず、AWS EventBridge Scheduler が Lambda 関数を呼び出せるようにする IAM ロールを作成する必要があります。
IAM コンソールに移動します: IAM コンソールに移動し、左側のナビゲーション ペインから ロール を選択し、ロールの作成 をクリックします。
信頼できるエンティティの選択: AWS サービス を選択し、Lambda を選択して、次へ: 権限 をクリックします。
ポリシーのアタッチ: 次の管理ポリシーをアタッチします:
確認して作成: ロールの名前 (LambdaExecutionRole など) を指定し、設定を確認して、ロールの作成 をクリックします。
信頼関係の更新: ロールの作成後、ロールの詳細ページに移動します。 信頼関係 タブで、信頼関係の編集 をクリックします。信頼ポリシーを更新して、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" } ] }
スケジュールされたイベントを処理する Lambda 関数を作成します。
Lambda コンソールに移動します: Lambda コンソールに移動し、関数の作成 をクリックし、最初から作成する を選択します。
Lambda 関数を設定します: 関数名を processScheduledEvent に設定し、ランタイムとして Node.js 16.x を選択し、前に作成した既存のロール (LambdaExecutionRole) を使用します。 関数の作成をクリックします。
関数コードの追加: デフォルトのコードをイベントを処理するロジックに置き換えます。たとえば、イベントの詳細をログに記録したり、イベント データに基づいて特定のアクションを実行したりできます。
{ "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" } ] }
次に、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 (協定世界時) に変換します。
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 時刻文字列が 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
AWS SDK を使用して EventBridge スケジュールを作成し、Lambda 関数 ARN をターゲットとして指定し、イベントの詳細を入力として含めます。
const utcString = utcTime.toISOString().split('.')[0] + 'Z';
このブログ投稿では、AWS EventBridge Scheduler と Lambda を使用してスケジュールされたイベントを設定するプロセスについて説明しました。このアプローチにより、アプリケーションは複数のスケジュールされたイベントを効率的かつスケーラブルに処理できるようになります。 AWS の力を利用して、ユーザーエクスペリエンスを向上させ、運用を合理化する堅牢な機能を構築できます。
コーディングを楽しんでください!
以上がLambda を使用して EventBridge でイベントをスケジュールするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。