教學課程:建立 AWS Lambda 函數的 EventBridge 排程規則 - Amazon EventBridge

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:建立 AWS Lambda 函數的 EventBridge 排程規則

您可以設定規則來排程執行 AWS Lambda 函數。本自學課程展示如何使用 AWS Management Console 或 AWS CLI 來建立規則。如果您想要使用 AWS CLI 但尚未安裝,請參閱安裝、更新和解除安裝 AWS CLI 版本 2

對於排程, EventBridge 不會在明細表運算式中提供第二層精確度。使用 cron 表達式的最小解析是一分鐘。由於目標服務 EventBridge 和目標服務的分散式本質,在觸發排定的規則到目標服務執行目標資源的時間之間,可能會有幾秒鐘的延遲。

步驟 1:建立 Lambda 函數

建立 Lambda 函數以記錄排程事件。

建立 Lambda 函式
  1. 在開啟 AWS Lambda 主控台https://console.aws.amazon.com/lambda/

  2. 選擇建立函數

  3. 選擇從頭開始撰寫

  4. 輸入 Lambda 函數的名稱和描述。例如,將函數命名為 LogScheduledEvent

  5. 將其餘選項保留為預設值並選擇建立函數

  6. 在函數頁面的程式碼標籤上,按兩下 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. 選擇部署

步驟 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. 針對排程模式,請選擇以固定速率執行的排程,例如每 10 分鐘執行一次。然後輸入 5 並從下拉式清單中選擇分鐘

  9. 選擇下一步

  10. 目標類型欄位中,選擇 AWS 服務

  11. 針對選取目標,請從下拉式清單中選擇 Lambda 函數

  12. 函數中,選取您在步驟 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. 選擇刪除

  4. 選擇刪除

若要刪除 Lambda 函數
  1. 開啟 Lambda 主控台中的函數頁面

  2. 選取您建立的函數。

  3. 選擇 動作刪除

  4. 選擇 刪除