借助 AWS Lambda,用戶可以在無(wú)服務(wù)器函數(shù)中運(yùn)行他們的代碼,而 AWS 負(fù)責(zé)后端管理。此外,Lambda 的“只為使用的東西付費(fèi)”的模式幫助企業(yè)避免為未使用的云資源付費(fèi)。由于 Lambda 抽象化了操作復(fù)雜性并可以降低云成本,因此人氣飆升并成為許多企業(yè)無(wú)服務(wù)器架構(gòu)的重要組成部分。下面,我們將仔細(xì)研究 AWS Lambda 的工作原理、它的特性和優(yōu)勢(shì),以及企業(yè)如何保護(hù)他們的 Lambda 工作負(fù)載。
AWS Lambda 是如何工作的?
從用戶的角度來(lái)看,AWS Lambda 的工作方式可以概括為四個(gè)步驟。
#1。將代碼上傳到 Lambda 或直接在 Lambda 控制臺(tái)編輯器中編寫。
開(kāi)發(fā)人員可以上傳他們已經(jīng)編寫的代碼,或者使用 Lambda 的原生編輯器從頭開(kāi)始編寫代碼。通常,Lambda 代碼需要是無(wú)狀態(tài)的。這意味著它不應(yīng)該依賴于底層基礎(chǔ)設(shè)施、文件系統(tǒng)或子進(jìn)程的狀態(tài)。如果需要有狀態(tài)數(shù)據(jù),可以從 S3 等其他 AWS 服務(wù)調(diào)用它。在此步驟中上傳或編寫的代碼稱為 Lambda 函數(shù)。每個(gè) Lambda 函數(shù)都需要一些基本的元數(shù)據(jù)配置,包括名稱、資源要求和入口點(diǎn)。
#2。配置執(zhí)行代碼的觸發(fā)器。
觸發(fā)器只是對(duì)事件的自動(dòng)響應(yīng)。它們?cè)试S Lambda 函數(shù)作為特定事件或操作的結(jié)果運(yùn)行。例如,對(duì) DynamoDB 數(shù)據(jù)庫(kù)的 API 調(diào)用或修改可以充當(dāng) Lambda 函數(shù)的觸發(fā)器。
#3。當(dāng)觸發(fā)事件發(fā)生時(shí),Lambda 會(huì)自動(dòng)運(yùn)行代碼。
配置觸發(fā)器后,每次觸發(fā)時(shí) AWS 都會(huì)自動(dòng)運(yùn)行 Lambda 函數(shù)。企業(yè)無(wú)需擔(dān)心底層基礎(chǔ)設(shè)施、操作系統(tǒng)補(bǔ)丁、監(jiān)控或日志記錄。這些功能根據(jù)需要運(yùn)行和擴(kuò)展。
#4。AWS 僅對(duì) Lambda 代碼在運(yùn)行時(shí)使用的資源收費(fèi)。
根據(jù) Lambda 資源運(yùn)行的時(shí)間向客戶收費(fèi)。Lambda 函數(shù)給定運(yùn)行的持續(xù)時(shí)間是從開(kāi)始到完成(或終止)的時(shí)間,四舍五入到最接近的毫秒。
AWS Lambda 的主要功能
AWS Lambda提供了多種功能,使企業(yè)能夠可靠地?cái)U(kuò)展 AWS 云中的工作負(fù)載。一些最重要的 Lambda 功能是:
- 自動(dòng)縮放。Lambda 根據(jù)傳入請(qǐng)求自動(dòng)擴(kuò)展。這意味著即使對(duì)于高度可突發(fā)的工作負(fù)載,性能也能保持一致。由于 Lambda 函數(shù)是無(wú)狀態(tài)的,因此平臺(tái)可以快速觸發(fā)它們而無(wú)需配置或部署延遲。
- 支持多種語(yǔ)言。Lambda 原生支持 Python、Java、PowerShell、Ruby、C#、Go 和 Node.js。此外,企業(yè)可以使用 Lambda Runtime API 將其他編程語(yǔ)言用于其 Lambda 函數(shù)。
- 自動(dòng)化管理。基礎(chǔ)架構(gòu)管理、修補(bǔ)、監(jiān)控和日志記錄既復(fù)雜又耗時(shí)。Lambda 通過(guò)使管理成為底層服務(wù)的一部分來(lái)消除這種復(fù)雜性。企業(yè)只需要擔(dān)心代碼和觸發(fā)器。
- 藍(lán)圖。函數(shù)藍(lán)圖使編寫與 AWS 服務(wù)和第 3 方應(yīng)用程序交互的 Lambda 函數(shù)變得更加容易。
- 與其他 AWS 和第 3 方服務(wù)的集成。Lambda 可輕松與各種其他 AWS 服務(wù)集成,包括 RDS 代理、彈性文件系統(tǒng)、S3 和 CloudFront。此外,Lambda 具有足夠的可擴(kuò)展性,可以輕松地與包括身份提供者在內(nèi)的各種其他第 3 方服務(wù)集成。
- 代碼簽名。代碼簽名驗(yàn)證 Lambda 代碼的真實(shí)性。通過(guò)簽名的函數(shù)代碼,企業(yè)可以幫助確保只執(zhí)行批準(zhǔn)和未修改的 Lambda 函數(shù)。
AWS Lambda 的主要優(yōu)勢(shì)
當(dāng)然,AWS Lambda 的功能只有在提供實(shí)際好處時(shí)才重要。Lambda 對(duì)現(xiàn)代企業(yè)的主要好處包括:
- 真正的無(wú)服務(wù)器架構(gòu)。無(wú)服務(wù)器架構(gòu)的承諾是企業(yè)可以在不管理服務(wù)器的情況下運(yùn)行工作負(fù)載。Lambda 在全球最大的云基礎(chǔ)設(shè)施提供商上大規(guī)模實(shí)現(xiàn)了這一目標(biāo)。企業(yè)無(wú)需擔(dān)心補(bǔ)丁、維護(hù)、容錯(cuò)或可擴(kuò)展性,他們只需關(guān)注自己的工作負(fù)載和代碼。
- 降低成本。現(xiàn)收現(xiàn)付的定價(jià)模式意味著企業(yè)無(wú)需購(gòu)買他們??很少使用的計(jì)算資源。
- 迭代開(kāi)發(fā)。無(wú)服務(wù)器架構(gòu)支持快速創(chuàng)新和迭代開(kāi)發(fā)。借助 Lambda,企業(yè)開(kāi)發(fā)團(tuán)隊(duì)可以更快地部署代碼和反饋循環(huán)。
AWS Lambda 和無(wú)服務(wù)器安全挑戰(zhàn)
雖然無(wú)服務(wù)器架構(gòu)抽象出了許多任務(wù),例如打補(bǔ)丁和操作系統(tǒng)強(qiáng)化,但無(wú)服務(wù)器安全性也帶來(lái)了一系列獨(dú)特的挑戰(zhàn)。例如,應(yīng)用程序現(xiàn)在被分解成許多 Lambda 函數(shù),這些函數(shù)可能使用來(lái)自各種來(lái)源的觸發(fā)器。這會(huì)產(chǎn)生更多企業(yè)必須保護(hù)的攻擊向量。同樣,隨著功能數(shù)量的增加,創(chuàng)建強(qiáng)制執(zhí)行最小特權(quán)和零信任原則的策略變得更加復(fù)雜。
幸運(yùn)的是,現(xiàn)代云工作負(fù)載保護(hù)平臺(tái) (CWPP)和其他云安全解決方案可以幫助企業(yè)應(yīng)對(duì)這些無(wú)服務(wù)器安全挑戰(zhàn)。