AWS re:Invent 2016大會無服務器模式相關新聞內容預覽
譯文【51CTO.com快譯】 無服務器計算模式正快速發展,這場競賽的最終勝負又將如何?
AWS re: Invent 2016大會再有不到一周就將于拉斯維加斯召開。我們期待著此次盛會帶來更多新鮮內容,特別是AWS陣營中最重要亦***普遍性的服務之一:Lambda。
過去幾天以來,AWS方面已經發布了多項有趣的消息,相信在本屆大會中還將有大量猛料全面出爐。
下面來看AWS迄今為止已經確認的各項重要內容。
AWS Lambda – 環境變量
大家曾經多少次將敏感信息以硬編碼的方式直接添加至Lambda Function代碼當中?大家又曾多少次利用錯誤的“開發”密鑰部署了“生產”Lambda Function?
您有多少次僅僅是因為簡單的配置參數變動,而不得不重新部署同樣的Lambda Function?
我猜很多朋友和我一樣,都被迫想辦法利用復雜的自動化工具(例如Serveless框架)來解決這些繁瑣的難題。
無論如何,現在我們終于可以利用AWS KMS安全存儲在AWS Lambda之上原生配置環境變量了。這意味著我們的變量值將受到安全加密,并在需要時由AWS進行檢索。
最有趣的是,大家也不再需要頻繁變更自己的Lambda Function代碼了,因為現在我們可以輕松從每套運行時(例如Node.js中的process.ev以及Python中的os.environ等)中讀取標準環境的變量值。
在這里,我要強調這項新功能中的兩大重要細節:
1. 存儲空間上限為4 KB,每個變量擁有自己獨立的4 KB容量。
2. 環境變量在各Function版本中恒定,意味著大家需要創建新的Version才能對其值進行更新,默認為$LATEST。
AWS SAM – 無服務器應用模式
AWS SAM可能是自AWS Lambda發布以來規模***的一次Serverless更新了。Tim Wager曾在今年早些時候于紐約召開的ServerlessConf大會上公布了Flourish項目。
AWS SAM正是Flourish的新名稱,其目標在于成為***套面向無服務器應用的廠商中立性參考方案。
在實踐中,AWS SAM能夠輕松定義由無服務器應用使用的全部資源。這種新模式允許大家利用Amazon CloudFormation為無服務器應用進行特定資源優化。這種能力特別適用于進一步優化負責對Lambda Function、API Gateway API以及DynamoDB Table等進行部署與管理的一切自動化工具及框架。
從技術角度講,大家最終可僅利用幾行文本定義一款無服務器應用。事實上,大家完全能夠使用新的AWS::Serverless CloudFormation命名空間。
以下為全新資源類型的匯總列表:
· AWS::Serverless::Function:代表一項AWS Lambda Function,其中包含其IAM角色(或者策略列表)、環境配置、VPC配置以及事件映射等。
· AWS::Serverless::API:代表一組API網關資源與方法集合。需要注意的是,大家不需要手動定義此資源(其將由AWS::Serverless::Function事件映射進行自動引用),除非您希望生成更為準確的Swagger文檔。
· AWS::Serverless::SimpleTable:代表位于單一屬性主鍵中的一套DynamoDB表。如果大家需要其它先進DynamoDB功能,亦可使用完整的AWS::DynamoDB::Table資源。
舉例來說,大家可以通過以下方式為一套DynamoDB表定義一個簡單的只僅API:
1.AWSTemplateFormatVersion: '2010-09-09'
2.Transform: AWS::Serverless-2016-10-31
3.Description: Ready-only access to DynamoDB table.
4.Resources:
5.MyReadOnlyFunction:
6.Type: AWS::Serverless::Function
7.Properties:
8.Handler: index.get
9.Runtime: python27
10.Policies: AmazonDynamoDBReadOnlyAccess
11.Environment:
12.Variables:
13.TABLE_NAME: !Ref ItemsTable
14.Events:
15.ReadItem:
16.Type: Api
17.Properties:
18.Path: /item/{itemId}
19.Method: get
20.ItemsTable:
21.Type: AWS::Serverless::SimpleTable
遺憾的是,目前部分原生Lambda事件源尚不受支持——例如AWS CodeCommit——不過我將時刻關注其***動態以及無服務器應用開發流程的未來變化。如果大家對此抱有興趣,查看該項目的GitHub庫。
API Gateway – 二進制數據支持
我發現很多AWS用戶一直在熱切期待這項功能的出現。API Gateway目前只支持JSON栽荷與響應,而且多媒體相關API資源的實現仍然非常困難——至少技術難度較高。
Amazon API Gateway現在正式支持二進制數據!
— Amazon Web Services (@awscloud) 2016年11月18日
現在大家可以提交二進制載荷了——例如一幅巨大的PNG圖像——而二進制響應會正確將其顯示為尺寸經過調整的效果。
要實現這一點,大家只需要定義兩個選項:
1. 首先是Integration與IntegrationResponse的contentHandling屬性,其可被設定為CONVERT_TO_BINARY或者CONVERT_TO_TEXT。
2. RestApi資源的binaryMediaTypes,其中包含一份您希望作為二進制數據處理的MIME類型列表。
遺憾的是,新的contentHandling屬性目前尚未受到AWS Lambda內各API Gateway資源的全面支持——其仍會將請求本體轉換為JSON。我期待著這方面的更多后續消息。
另一種有趣的用例則是如何利用API Gateway與Lambda實現gzipped responses,其主要適用于您的JSON響應體積龐大且易于緩存的情況。截至目前,惟一的可行方案是通過額外的CloudFront分發建立API Gateway,或者在您的客戶機上實現一項定制化解壓功能。
更多無服務器新聞 – 不只是AWS
無服務器生態系統目前正朝著多個文峰發展壯大,且亦有其它多家廠商積極參與進來以影響這一輪無服務器化革命。以下新聞雖然與AWS并無直接關聯,亦不會影響到即將召開的AWS re: Invent大會,但卻仍然值得關注。
Serverless Framework 1.2——新的里程碑
Serverless Framework自剛剛六個月前問世以來已經發生了巨大變化。當時其版本號僅為0.5,但幾個月間其發展勢頭強勁,且完成一輪數額達300萬美元的融資活動。
在10月12日發布了1.0版本之后,開發團隊公布了一項雙周發布計劃,而1.2版本正是這項計劃的***產物,其中包括:
· 支持AWS Lambda環境變量。
· 每函數自定義IAM角色。
· 為CloudFormation資源提供更好的命名定制化能力。
· 改進本地執行與錯誤處理機制。
· 簡化打包并可將配置納入其中。
大家可以在GitHub上找到該項目的全部發展里程碑設置。其下個版本1.3將于11月30日推出,且將帶來更多激動人心的功能。毫無疑問,其也將在本屆AWS re: Invent大會上為我們帶來大量重量級新聞。
舉例來說,其已經打造出名為Serverless Dashboard的全新開源項目,其代表著新的用戶友好層,立足于Serverless CLI之上并用于強化該框架的用戶體驗。
以下為其Mac版本原生應用的屏幕內容,大家可以在GitHub上找到這款應用:
Azure Function進入通用階段
就在上周,微軟公司宣布其Azure Function進入通用階段。
微軟于八個月之前剛剛公布Function即服務的預覽版本,其支持C#、JavaScript、Python以及PHP。
這套新的無服務器平臺將把眾多大型企業及小型初創企業吸引至微軟生態系統當中。事實上,其立足于Azure App Services創造出了一種新的應用模式,同時還衍生出Azure Bot Service等一系列新型服務。
我期待著未來這套平臺上出現更多功能,也盼望它能夠全面集成至Serverless Framework當中。
開源 Iron Functions
Iron.io公司公布了其***大型開源項目,即IronFunctions。該項目主要由Go語言編寫而成,且將作為一套利用Kubernetes、Mesosphere、CloudFoundry、OpenShift以及Docker等開源技術構建混合/多云無服務器解決方案的新型途徑存在。
選擇Docker作為打包機制使得IronFunctions獲得了語言中立性,不過該團隊亦決定支持AWS Lambda打包格式以進一步提升可移植能力。另外,其還宣布將支持其它更多格式類型。
未來還將有什么新消息?
AWS在其re: Invent 2014大會上公布了Lambda,我相信本屆大會還將有更多值得關注的新聞出現。另外,Serverless已經成為一種全球性趨勢。每一家云服務供應商都打造出了自己的無服務器解決方案——其各有不同的實現方法與優勢。與此同時,成百上千本地社區亦集結起來共享無服務器思路、愿望單項目并探討現有問題。
以下是我個人面向未來幾個月列出的無服務器模式許愿單。希望AWS能在下周為我帶來驚喜!
· 聲明依賴性管理: Node.js有package.json,Python有requirements.txt,Java則有manifest.xml。開發者就是希望通過這樣的方式定義并管理自己的代碼依賴性。
· 本地單元測試: 我希望直接在云中定義自己的測試套件,并由AWS Lambda處理其它麻煩的工作。雖然在本地運行上千項測試也不是不行,但為什么不借助Lambda強大的并發與速度優勢加快用戶的開發進度呢?
· 更長的執行時間:由于部分用戶每天只需要20分鐘運行其代碼,為什么他們就不能啟動EC2實例或者以遞歸方式調用Lambda Function?
· 支持更多語言:我能想到的支持范疇應該包括Ruby、PHP、Swift以及Python 3等等。如果AWS希望讓開發者的日常生活變得更為輕松,那么原生支持能力絕對至關重要。而且需要強調的是,支持Docker并不是真正的***解決方案。
原文鏈接:
http://cloudacademy.com/blog/serverless-news-aws-reinvent-2016/
原文標題:Serverless News announced before AWS re:Invent 2016
原文作者:Alex Casalboni
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】