400-638-8808
|
微信公眾號





穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無阻

協(xié)同辦公 資源管理

超大郵件 超級功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

Nodejs 是 AWS Lambda 函數(shù)支持的語言之一。 nodejs 支持的版本是 v6.10 和 v8.10、在本章中,我們將詳細(xì)了解 NODEJS 中 AWS Lambda 函數(shù)的各種功能。
NodeJS 中的處理程序
要在 nodejs 中編寫 AWS Lambda 函數(shù),我們應(yīng)該先聲明一個(gè)處理程序。 nodejs 中的處理程序是文件名和導(dǎo)出函數(shù)的名稱。比如文件名是 index.js,導(dǎo)出函數(shù)名是 lambda handler,所以它對應(yīng)的handler是 index.lambdahandler
觀察此處顯示的示例處理程序-
exports.lambdahandler = function(event, context, callback) { //code goes here}
處理程序的參數(shù)
Handler 是構(gòu)建 Lambda 函數(shù)的主要核心。處理程序采用三個(gè)參數(shù): event、context 和 callback。
事件參數(shù)
它具有觸發(fā)事件的所有詳細(xì)信息。例如,如果我們使用 Lambda 函數(shù)在 S3 上觸發(fā),則該事件將包含 S3 對象的詳細(xì)信息。
上下文參數(shù)
它具有上下文的詳細(xì)信息,例如 Lambda 函數(shù)的屬性和配置詳細(xì)信息。
回調(diào)函數(shù)
它有助于將詳細(xì)信息反饋給來電者。回調(diào)的結(jié)構(gòu)如下-
callback(error, result);
回調(diào)函數(shù)的參數(shù)解釋如下-
錯(cuò)誤- 如果在執(zhí)行 Lambda 函數(shù)期間發(fā)生任何錯(cuò)誤,這將提供詳細(xì)信息。如果 Lambda 函數(shù)成功, null 可以作為回調(diào)函數(shù)的第一個(gè)參數(shù)傳遞。
Result- 這將提供成功執(zhí)行 lambda 函數(shù)的詳細(xì)信息。如果發(fā)生錯(cuò)誤,則忽略結(jié)果參數(shù)。
注意- 在 AWS Lambda 中使用回調(diào)函數(shù)不是強(qiáng)制性的。如果沒有回調(diào)函數(shù),處理程序會將其返回為空。
有效的回調(diào)簽名如下-
callback(); // It will return success, but no indication to the caller
callback(null); // It will return success, but no indication to the caller
callback(null, "success"); // It will return the success indication to the caller callback(error); // It will return the error indication to the caller
每當(dāng)執(zhí)行 AWS Lambda 時(shí),回調(diào)詳細(xì)信息(例如錯(cuò)誤或成功)都會與控制臺消息(如果有)一起記錄在 AWS CloudWatch 中。
在 Nodejs8.10 中使用 AWS Lambda
讓我們了解如何在 nodejs8.10 中使用 AWS Lambda 并以同步和異步方式調(diào)用該函數(shù)。
以同步方式調(diào)用Lambda函數(shù)
以下示例讓您了解以同步方式調(diào)用 Lambda 函數(shù)-
exports.handler = function(event, context, callback) {
let arrItems = [4,5,6,8,9,10,35,70,80,31];
function countevennumbers (items) {
return new Promise(resolve => {
setTimeout(() => {
let a = 0;
for (var i in items) {
if (items[i] % 2 == 0) {
a++;
}
}
resolve(a);
},2000);
});
}
let evennumber = countevennumbers(arrItems);
callback(null,"even numbers equals ="+evennumber);
};
在 AWS 控制臺中測試此代碼后,您可以觀察到以下輸出-

如果我們在處理函數(shù)上有 async/await 將從 lambda 函數(shù)獲得準(zhǔn)確的輸出。
以異步方式調(diào)用處理程序
以下示例讓您了解以異步方式調(diào)用 Lambda 函數(shù)-
exports.handler = async function(event, context, callback) {
let arrItems = [4,5,6,8,9,10,35,70,80,31];
function countevennumbers (items) {
return new Promise(resolve => {
setTimeout(() => {
let a = 0;
for (var i in items) {
if (items[i] % 2 == 0) {
a++;
}
}
resolve(a);
}, 2000);
});
}
let evennumber = await countevennumbers(arrItems);
callback(null,"even numbers equals ="+evennumber);
};
我們在上面的代碼中添加了 async 和 await。當(dāng)我們在函數(shù)調(diào)用旁邊使用 await 時(shí),執(zhí)行會暫停,直到函數(shù)內(nèi)的 promise 被解析。請注意, await 僅對 async 函數(shù)有效。
在 AWS 控制臺中測試此代碼后,您可以觀察到以下輸出-

NodeJS 中的上下文詳細(xì)信息
Context 對象提供了 Lambda 函數(shù)的名稱、剩余時(shí)間(以毫秒為單位)、請求 ID、cloudwatch 組名稱、超時(shí)詳細(xì)信息等詳細(xì)信息。
下表顯示了上下文對象可用的方法和屬性列表-
上下文對象可用的方法
|
Sr.No |
方法名稱和描述 |
|
1 |
getRemainingTimeInMillis() 此方法以毫秒為單位給出剩余時(shí)間,直到 Lambda 函數(shù)終止函數(shù) |
可用于上下文對象的屬性
|
Sr.No |
屬性名稱和描述 |
|
1 |
functionName 這給出了 AWS Lambda 函數(shù)名稱 |
|
2 |
functionVersion 這里給出了 AWS Lambda 函數(shù)執(zhí)行的版本 |
|
3 |
nvokedFunctionArn 這將提供 ARN 詳細(xì)信息。 |
|
4 |
memoryLimitInMB 這顯示了創(chuàng)建 Lambda 函數(shù)時(shí)添加的內(nèi)存限制 |
|
5 |
awsRequestId 這給出了 AWS 請求 ID。 |
|
6 |
logGroupName 這將給出 cloudwatch 組的名稱 |
|
7 |
logStreamName 這將給出寫入日志的 cloudwatch 日志流名稱。 |
|
8 |
identity 當(dāng)與 aws mobile sdk 一起使用時(shí),這將提供有關(guān) amazon cognito 身份提供商的詳細(xì)信息。 給出的詳細(xì)信息如下- identity.cognito_identity_ididentity.cognito_identity_pool_id |
|
9 |
clientContext 這將是與 aws mobile sdk 一起使用時(shí)客戶端應(yīng)用程序的詳細(xì)信息。給出的細(xì)節(jié)如下- client_context.client.installation_idclient_context.client.app_titleclient_context.client.app_version_nameclient_context.client.app_version_codeclient_context.client.app_package_nameclient_context.custom-它具有來自移動(dòng)客戶端應(yīng)用程序的自定義值的字典client_context.env-它包含來自 AWS 移動(dòng)開發(fā)工具包的環(huán)境詳細(xì)信息 |
查看以下示例以更好地了解上下文對象-
exports.handler = (event, context, callback) => {
// TOdo implement
console.log("Remaining time =>", context.getRemainingTimeInMillis());
console.log("functionName =>", context.functionName);
console.log("AWSrequestID =>", context.awsRequestId);
console.log("logGroupName =>", context.log_group_name);
console.log("logStreamName =>", context.log_stream_name);
console.log("clientContext =>", context.clientContext);
callback(null, "Name of aws Lambda is=>"+context.functionName);
};
在 AWS 控制臺中測試此代碼后,您可以觀察到以下輸出-


登錄 NodeJS
我們可以使用 console.log 來登錄 NodeJS。日志詳細(xì)信息可以從 CloudWatch 服務(wù)中針對 Lambda 函數(shù)獲取。
觀察以下示例以更好地理解-
exports.handler = (event, context, callback) => {
// TOdo implement
console.log("Logging for AWS Lamnda in NodeJS");
callback(null, "Name of aws Lambda is=>"+context.functionName);
};
在 AWS 控制臺中測試此代碼后,您可以觀察到以下輸出-


NodeJS 中的錯(cuò)誤處理
讓我們了解一下 NodeJS 中的錯(cuò)誤通知是如何完成的。觀察以下代碼-
exports.handler = function(event, context, callback) {
// this Source code only throws error.
var error = new Error("something is wrong");
callback(error);
};


{
"errorMessage": "something is wrong", "errorType": "Error", "stackTrace": [ "exports.handler (/var/task/index.js:2:17)" ] }
作為AWS核心代理商,選擇天.下.數(shù).據(jù)的優(yōu)勢
1、專屬客服協(xié)助注冊AWS,或提供注冊好的賬號直接使用
2、支持收U等多幣種支付代付,無額外服務(wù)費(fèi)用
3、AWS多種產(chǎn)品類型,更高產(chǎn)品租賃權(quán)限
4、針對大客戶,AWS專屬折扣優(yōu)惠
5、7x24小時(shí)專屬客服,在線解答各種疑問
AWS亞馬遜云代理商哪家好?推薦找天 下 數(shù) 據(jù),可享受高額折扣、高額返現(xiàn)優(yōu)惠,詳詢電話40 0-63 8-88 08 官網(wǎng):http://m.51huadong.com/2023/aws.asp
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國服務(wù)器 韓國服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國云主機(jī) 韓國云主機(jī) 新加坡云主機(jī) 臺灣云主機(jī) 日本云主機(jī) 德國云主機(jī) 全球云主機(jī)高防專線
海外高防IP 海外無限防御 SSL證書 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊(duì)建設(shè) 加入天下數(shù)據(jù) 媒體報(bào)道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務(wù)器、美國服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證》 ISP證:粵ICP備07026347號
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營)聯(lián)合版權(quán)
深圳總部:中國.深圳市南山區(qū)深圳國際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號建安商業(yè)大廈7樓
7×24小時(shí)服務(wù)熱線:4006388808香港服務(wù)電話:+852 67031102
本網(wǎng)站的域名注冊業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品