
- AWS Lambda 教程
- AWS Lambda - 首頁
- AWS Lambda - 概述
- AWS Lambda - 環境設定
- AWS Lambda - 簡介
- 構建 Lambda 函式
- NODEJS 函式
- Java 函式
- Python 函式
- Go 函式
- C# 函式
- 配置 Lambda 函式
- 使用 AWS 控制檯建立和部署
- 使用 AWS CLI 建立和部署
- 使用 Serverless Framework 建立和部署
- AWS 執行和呼叫 Lambda 函式
- 刪除 Lambda 函式
- 使用 Amazon API Gateway
- Lambda 函式與 Amazon S3
- Lambda 函式與 Amazon DynamoDB
- Lambda 函式與計劃事件
- Lambda 函式與 Amazon SNS
- Lambda 函式與 CloudTrail
- Lambda 函式與 Amazon Kinesis
- Lambda 函式與自定義使用者應用程式
- AWS Lambda@Edge 與 CloudFront
- 使用 Cloudwatch 進行監控和故障排除
- AWS Lambda - 附加示例
- AWS Lambda 有用資源
- AWS Lambda - 快速指南
- AWS Lambda - 有用資源
- AWS Lambda - 討論
使用 Lambda 函式與計劃事件
計劃事件應該根據規則集定期發生。計劃事件用於在 CloudWatch 服務中定義的時間間隔後執行 Lambda 函式。它們最適合與 AWS Lambda 一起處理 cron 作業。本章將透過簡單的示例解釋如何使用計劃事件和 AWS Lambda 每 5 分鐘傳送一次郵件。
先決條件
使用 Lambda 函式與計劃事件的要求如下:
- 使用 AWS SES 驗證郵箱ID
- 建立角色以使用 AWS SES、CloudWatch 和 AWS Lambda
- 建立用於傳送電子郵件的 Lambda 函式
- 從 AWS CloudWatch 新增計劃事件規則
示例
我們將要考慮的示例會將 CloudWatch 事件新增到 AWS Lambda 函式。CloudWatch 將根據附加的時間模式觸發 AWS Lambda。例如,在下面的示例中,我們使用了 5 分鐘作為觸發器。這意味著每 5 分鐘,AWS Lambda 都會被觸發,並且 AWS Lambda 每次觸發時都會發送郵件。
相同的基本框圖如下所示:

使用 AWS SES 驗證電子郵件 ID
登入 AWS 並轉到 AWS SES 服務,如下所示:

現在,點選簡單電子郵件服務,如下圖所示:

點選左側的電子郵件地址,如下圖所示:

它顯示一個按鈕驗證新的電子郵件地址。點選它。

輸入您要驗證的電子郵件地址。點選驗證此電子郵件地址按鈕。您將收到來自 AWS 的郵件,郵件主題為:Amazon Web Services – 電子郵件地址驗證請求(美國東部(弗吉尼亞北部)區域)。
點選郵件中提供的連結以驗證電子郵件地址。驗證後,它將顯示電子郵件 ID,如下所示:

建立角色以使用 AWS SES、CloudWatch 和 AWS Lambda
您還可以建立一個角色,該角色允許使用這些服務。為此,請轉到 IAM 並選擇角色。新增所需的策略並建立角色。注意此處建立的角色是events with lambda。

建立用於傳送電子郵件的 Lambda 函式
您需要按照步驟使用 nodejs 作為執行時建立 Lambda 函式。

現在,新增觸發器到 Lambda,如下圖所示:

新增詳細資訊到CloudWatch Events 觸發器,如下所示:

請注意,根據建立的規則觸發器,事件將每 5 分鐘觸發一次。
傳送電子郵件的 Lambda 程式碼如下:
var aws = require('aws-sdk'); var ses = new aws.SES({ region: 'us-east-1' }); exports.handler = function(event, context, callback) { var eParams = { Destination: { ToAddresses: ["xxxxxxxt12@gmail.com"] }, Message: { Body: { Text: { Data: "this mail comes from aws lambda event scheduling" } }, Subject: { Data: "Event scheduling from aws lambda" } }, Source: "coxxxxxx@gmail.com" }; console.log('===SENDING EMAIL==='); var email = ses.sendEmail(eParams, function(err, data) { if (err) console.log(err); else { console.log("===EMAIL SENT==="); console.log("EMAIL CODE END"); console.log('EMAIL: ', email); context.succeed(event); callback(null, "email is send"); } }); };
現在,我們需要 AWS SES 服務。您可以使用如下所示的程式碼新增它:
var aws = require('aws-sdk'); var ses = new aws.SES({ region: 'us-east-1' });
為了從nodejs傳送郵件,我們建立了eParams物件,其中包含例如示例郵件、收件人郵箱 ID和包含訊息的正文等詳細資訊,如下所示:
var eParams = { Destination: { ToAddresses: ["xxxxxxxx12@gmail.com"] }, Message: { Body: { Text: { Data: "this mail comes from aws lambda event scheduling" } }, Subject: { Data: "Event scheduling from aws lambda" } }, Source: "coxxxxxx@gmail.com" };
傳送電子郵件的 Lambda 程式碼如下:
var email = ses.sendEmail(eParams, function(err, data) { if (err) console.log(err); else { console.log("===EMAIL SENT==="); console.log("EMAIL CODE END"); console.log('EMAIL: ', email); context.succeed(event); callback(null, "email is send"); } });
現在,讓我們儲存此 Lambda 函式並檢查電子郵件 ID 中的郵件。下圖顯示的螢幕截圖顯示郵件每 5 分鐘從 AWS Lambda 傳送一次。
