我們可以創(chuàng)建 Lambda 函數(shù)并在 AWS 控制臺(tái)中對(duì)其進(jìn)行測(cè)試。本章對(duì)此進(jìn)行了詳細(xì)討論。為此,您必須按照此處給出的步驟操作并觀(guān)察給出的相應(yīng)屏幕截圖-
免綁卡注冊(cè)AWS云賬戶(hù):http://hkonecloud.755800.com/
登錄 AWS 控制臺(tái) https://aws.amazon.com/console/。現(xiàn)在,您將被重定向到顯示 AWS 服務(wù)的屏幕。
現(xiàn)在,點(diǎn)擊上面突出顯示的 Lambda 服務(wù)。這將重定向到創(chuàng)建函數(shù),如下所示-
現(xiàn)在,單擊 創(chuàng)建函數(shù)并輸入函數(shù)的詳細(xì)信息。然后您可以看到如下所示的屏幕-
您可以通過(guò)選擇您選擇的語(yǔ)言來(lái)編寫(xiě)代碼。如果選擇的選項(xiàng)是內(nèi)聯(lián)編輯代碼,則必須在編輯器中編寫(xiě)代碼。其他可用選項(xiàng)如下-
完成后,您需要保存右上角給出的按鈕的更改,如下所示-
現(xiàn)在,點(diǎn)擊 測(cè)試按鈕。這給出了 Lambda 函數(shù)執(zhí)行的所有細(xì)節(jié),如下所示-
index.js 的代碼如下-
exports.handler = (event, context, callback) => { // TOdo implement callback(null, "Lambda test"); };
這將調(diào)用 回調(diào)函數(shù),結(jié)果可能是錯(cuò)誤或成功。成功后,您將看到 Lambda 測(cè)試 消息;如果出錯(cuò),它將傳遞null。
Lambda 函數(shù)的 Role 詳細(xì)信息是配置的一部分,如下所示-
現(xiàn)在,您可以根據(jù)需要更新角色并保存 Lambda 函數(shù)。然后,lambda 函數(shù)的內(nèi)存和超時(shí)詳細(xì)信息如下所示-
現(xiàn)在,我們需要為 Lambda 函數(shù)添加觸發(fā)器,以便它在事件發(fā)生時(shí)執(zhí)行。觸發(fā)器詳細(xì)信息顯示在 AWS Lambda 函數(shù)屏幕的開(kāi)頭,如下所示-
從中,您可以選擇希望觸發(fā) Lambda 函數(shù)的觸發(fā)器。選擇觸發(fā)器時(shí),必須添加觸發(fā)器的配置詳細(xì)信息。
例如,對(duì)于 S3 上的觸發(fā)器,要添加的配置詳細(xì)信息如下-
現(xiàn)在,選擇您想要觸發(fā)的存儲(chǔ)桶。事件類(lèi)型具有以下詳細(xì)信息-
對(duì)于觸發(fā)器,您還可以提及前綴類(lèi)型文件或文件模式,Lambda 必須是觸發(fā)器。詳情如圖所示-
現(xiàn)在,填寫(xiě)觸發(fā)器所需的詳細(xì)信息,然后單擊 添加按鈕。保存要添加的觸發(fā)器的 Lambda 函數(shù)。保存該函數(shù)會(huì)部署詳細(xì)信息,從現(xiàn)在開(kāi)始,任何時(shí)候文件都是添加到 S3 存儲(chǔ)桶后,Lambda 將被觸發(fā)。
觀(guān)察以下屏幕截圖,其中顯示了添加到 AWS Lambda 的 S3 觸發(fā)器-
現(xiàn)在,讓我們使用 S3 示例事件來(lái)測(cè)試 Lambda 函數(shù)。此處顯示了相同的代碼-
{ "Records": [{ "eventVersion": "2.0", "eventTime": "1970-01-01T00:00:00.000Z", "requestParameters": { "ExampleIPAddress": "127.0.0.1" }, "s3": { "configurationId": "testConfigRule", "object": { "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901", "key": "HappyFace.jpg", "size": 1024 }, "bucket": { "arn": bucketarn, "name": "Examplebucket", "ownerIdentity": { "principalId": "Example" } }, "s3SchemaVersion": "1.0" }, "responseElements": { "x-amz-id-2": "Example123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH", "x-amz-request-id": "Example123456789" }, "awsRegion": "us-east-1", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "Example" }, "eventSource": "aws:s3" }] }
您必須使用以下命令來(lái)獲取從 S3 put 事件上傳的文件的詳細(xì)信息-
event.Records[0].s3.object.key //will display the name of the file
您必須使用以下命令來(lái)獲取存儲(chǔ)桶名稱(chēng)-
event.Records[0].s3.bucket.name //will give the name of the bucket.
您必須使用以下命令來(lái)獲取 EventName-
event.Records[0].eventName // will display the event name
現(xiàn)在,讓我們更新 AWS Lambda 代碼以打印 S3 詳細(xì)信息,如下所示-
exports.lambdahandler = (event, context, callback) => { callback(null, "Bucket name: "+event.Records[0].s3.bucket.name+" File name:"+event.Records[0].s3.object.key ); };
保存更改。點(diǎn)擊 Test 并輸入 S3 示例事件-
現(xiàn)在點(diǎn)擊 測(cè)試,您可以看到如下所示的輸出-
要使用 S3 AWS 服務(wù)在 S3 上測(cè)試觸發(fā)器,請(qǐng)?jiān)?S3 存儲(chǔ)桶中上傳一個(gè)文件: 測(cè)試存儲(chǔ)桶觸發(fā)器。更新與 Lambda 一起使用的角色以獲取 S3 和 SES 策略(發(fā)送郵件)的權(quán)限。這將更新 AWS Lambda 代碼以發(fā)送郵件以查看觸發(fā)器工作-
更新后的 AWS Lambda 代碼如下所示-
var aws = require("aws-sdk"); var ses = new aws.SES({ region: "us-east-1" }); exports.lambdahandler = function(event, context, callback) { var eParams = { Destination: { ToAddresses: ["coxxxxxxx@gmail.com"] }, Message: { Body: { Text: { Data: "Bucket name: "+event.Records[0].s3.bucket.name+" File name:"+event.Records[0].s3.object.key } }, Subject: { Data: "S3 and AWS Lambda" } }, Example: "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"); } }); };
相應(yīng)的屏幕截圖如下所示-
現(xiàn)在,上傳文件并檢查 AWS Lambda 代碼中提供的郵件 ID-
海外服務(wù)器免費(fèi)測(cè)試:http://hbjsdrq.com/