在這篇文章中,我們將探討如何使用 AWS EventBridge Scheduler 和 AWS Lambda 安排事件。此方法高效且可擴展,確保您的應用程式可以處理多個計劃事件,而無需建立混亂的單獨 EventBridge 規則。讓我們潛入吧!
AWS EventBridge 是一種無伺服器事件匯流排服務,可讓您輕鬆使用來自您自己的應用程式、整合式軟體即服務 (SaaS) 應用程式和 AWS 服務的資料來連接應用程式。 EventBridge 提供來自事件來源的即時資料流,並將該資料路由到 AWS Lambda、Amazon SNS 等目標。
AWS Lambda 是一種無伺服器運算服務,讓您無需預置或管理伺服器即可執行程式碼。您可以直接從其他 AWS 服務(例如 S3、DynamoDB 或 EventBridge)觸發 Lambda 函數,並自動從每天幾個請求擴展到每秒數千個請求。
在我們開始之前,請確保您具備以下條件:
首先,我們需要建立一個 IAM 角色,以允許 AWS EventBridge Scheduler 呼叫您的 Lambda 函數。
前往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中文網其他相關文章!