在AWS的re:Invent 2015大會上,亞馬遜網(wǎng)絡(luò)服務(wù)重點關(guān)注對其現(xiàn)有服務(wù)的改善和擴展,其中就包括了AWS Lambda。自從今年早先時候AWS推出Lambda服務(wù)以來,開發(fā)人員一直都在要求擁有在VPC后設(shè)置一個Lambda集群的能力,或者最起碼能夠為Lambda功能配置安全組。這僅僅只是Lambda服務(wù)近期新增AWS功能中的一項。
對于Lambda服務(wù)的普通用戶來說,在AWS虛擬私有云計算(VPC)后部署服務(wù)的功能可能并不會讓他們感覺有多么興奮。但是,如果您正在使用Lambda來訪問被限制在防火墻(例如MySQL或其他傳統(tǒng)的關(guān)系型數(shù)據(jù)庫)后的資源,那么這是一個巨大的進步。通過把AWS Lambda置于VPC之后,當在DynamoDB中檢測到數(shù)據(jù)記錄發(fā)生變化時,DynamoDB流就可以觸發(fā)一個AWS Lambda功能,從而自動更新Aurora數(shù)據(jù)庫。這也意味著用戶可以限制訪問Lambda功能,所以這些功能只能在內(nèi)部網(wǎng)絡(luò)中被調(diào)用——此舉增加了額外的系統(tǒng)安全性。
雖然大部分的現(xiàn)代資源并不是根據(jù)IP地址范圍來進行過濾的,但是更老的技術(shù)是這么做的。AWS Lambda中的VPC支持允許訪問密鑰身份驗證框架來訪問IP限制的資源。Lambda可以通過VPC被部署在防火墻內(nèi),從而訪問傳統(tǒng)平臺;開發(fā)人員可以直接通過Lambda安全地使用新的外部客戶端。
使用MySQL、Lambda和瀏覽器應(yīng)用程序如果開發(fā)人員正在使用Lambda 服務(wù)、AWS SDK以及Java腳本程序來開發(fā)無服務(wù)器的網(wǎng)絡(luò)應(yīng)用程序,使用DynamoDB作為后端數(shù)據(jù)庫,那么就不應(yīng)該有任何問題。但是,為了使用一個諸如MySQL或Amazon Aurora這樣的關(guān)系型數(shù)據(jù)庫,可創(chuàng)建一個橋型應(yīng)用程序或者打開RDS MySQL實例。這可以打開MySQL,一個用于實現(xiàn)零日漏洞的臭名昭著目標以防進一步的攻擊。一般情況下,在一個開發(fā)端口上運行MySQL實例是一個糟糕的安全措施。
但是,運行Lambda服務(wù)是一個偉大的方法,它去除了一個后端,用戶就不需要編寫驗證MySQL的中間層,并為在Lambda外進行訪問提供了一個安全的方法。幸運的是,將Lambda功能置于VPC中可讓開發(fā)人員配置安全組并確保MySQL集群只使用特定Lambda功能。此舉可顯著減少曝光并確保MySQL實例得到合適保護。
確保只有授權(quán)用戶能夠訪問Lambda功能仍然是非常重要的,但是很幸運使用亞馬遜Cognito和IAM角色可以很容易地確保其安全性。
針對Lambda功能的調(diào)度功能另一項改善就是提供了調(diào)度AWS Lambda功能的能力。這使得開發(fā)人員能夠定期允許后臺任務(wù)以取代使用任務(wù)實例或諸如Cloud Cron之類的工具來運行腳本程序。Lambda服務(wù)還增加了它的最長運行時間至五分鐘。
例如,如果一家公司需要定期從博客網(wǎng)站讀取RSS訂閱,那么他們就可以在AWS Lambda中通過觸發(fā)一個自動調(diào)度功能來排隊讀取博客列表中的所有待讀取訂閱內(nèi)容,從而實現(xiàn)這一功能。該公司就可以安排主機功能每隔若干個小時從DynamoDB讀取數(shù)據(jù),然后針對每一個博客觸發(fā)Lambda函數(shù)讀取訂閱。
由于目前Lambda對設(shè)置了100個并發(fā)函數(shù)調(diào)用的限制,該公司就需要首先對這些調(diào)用進行排隊處理。但是一旦AWS取消了這一限制,那么用戶就可以通過主機調(diào)度函數(shù)觸發(fā)這些調(diào)用。
AWS Lambda目前支持Python,如果你正在現(xiàn)有環(huán)境中使用Python,那么這一點是非常重要的。但是,這也暗示AWS將在未來增加對額外編程語言的支持——甚至可能是對Docker的支持。