內容簡介
本書以實例為驅動,教會讀者如何使用事件驅動的方法來開發後端應用程序。從AWSLambda的基礎介紹開始,逐漸深入地講解瞭從Web或移動端調用Lambda函數的常見例子和模式。本書的第二部分把這些簡單的例子組閤在一起,構成瞭一個更大的應用。後,讀者將學會如何在AWS平颱上構建應用程序,滿足高可用性、高安全性、高性能和高擴展性的要求。
作者簡介
Danilo Poccia,是 Web Services的技術專員,他是AWS Lambda工具的創建者之一,這種工具通過外部事件驅動的服務可以簡化認證並整閤AWS資源。
目錄
贊譽
中文版序
推薦序
譯者序
前言
關於原書封麵插圖
第一部分 快速入門
第1章 在雲中運行函數2
1.1 AWS Lambda簡介5
1.2 以函數作為應用程序的後端10
1.3 應對一切的單一後端11
1.4 事件驅動的應用程序13
1.5 從客戶端調用函數17
總結20
第2章 屬於你的第一個Lambda函數21
2.1 創建一個新的函數21
2.2 編寫函數24
2.3 其他設置26
2.4 測試函數28
2.5 從Lambda API調用函數30
總結32
練習32
第3章 把函數作為Web API34
3.1 API Gateway簡介34
3.2 創建API36
3.3 創建集成38
3.4 測試集成40
3.5 改變響應信息41
3.6 把資源路徑作為參數46
3.7 使用API Gateway的上下文對象49
總結52
練習52
第二部分 構建事件驅動的應用程序
第4章 管理安全56
4.1 用戶、組和角色57
4.2 理解策略60
4.3 實踐策略63
4.4 使用策略變量68
4.5 賦予角色70
總結72
練習72
第5章 使用獨立的函數74
5.1 在函數中打包庫和模塊74
5.2 讓函數訂閱事件76
5.2.1 創建後端資源77
5.2.2 把函數打包78
5.2.3 配置權限82
5.2.4 創建函數84
5.2.5 測試函數86
5.3 在函數中使用二進製庫88
5.3.1 準備環境88
5.3.2 實現函數89
5.3.3 測試函數93
5.4 調度函數的執行94
總結98
練習98
第6章 用戶身份管理100
6.1 Cognito身份管理服務概述100
6.2 外部身份提供方103
6.3 集成自定義身份認證104
6.4 處理認證和非認證用戶105
6.5 使用 Cognito的策略變量106
總結110
練習110
第7章 從客戶端調用函數113
7.1 用JavaScript調用函數113
7.1.1 創建ID池114
7.1.2 為Lambda函數開放權限117
7.1.3 創建Web頁麵119
7.2 從移動應用中調用函數123
7.3 從瀏覽器調用函數127
總結131
練習131
第8章 設計基於Lambda的認證服務134
8.1 交互模式135
8.2 事件驅動架構137
8.3 使用 Cognito服務141
8.4 保存用戶配置文件142
8.5 嚮用戶配置文件添加更多數據143
8.6 加密密碼143
總結144
練習144
第9章 實現基於Lambda的認證服務146
9.1 管理集中式配置147
9.2 對初始化和部署實現自動化149
9.3 共享代碼150
9.4 創建應用的首頁151
9.5 注冊新用戶152
9.6 驗證用戶郵件158
總結163
練習163
第10章 為認證服務添加更多功能168
10.1 處理密碼遺忘168
10.2 處理密碼重置175
10.3 處理用戶登錄180
10.4 為認證用戶獲取AWS令牌184
10.5 處理密碼修改186
總結192
練習192
第11章 構建一個媒體共享應用195
11.1 事件驅動架構195
11.1.1 簡化實現196
11.1.2 閤並函數199
11.1.3 改進事件驅動架構201
11.2 在 S3中定義對象的命名空間202
11.3 為 DynamoDB設計數據模型204
11.4 客戶端應用205
11.5 響應內容更新216
11.6 更新內容索引220
總結223
練習225
第12章 為什麼選擇事件驅動226
12.1 事件驅動架構總覽227
12.2 從前端起步228
12.3 關於後端229
12.4 響應式編程232
12.5 通嚮微服務之路235
12.6 平颱的擴展性237
12.7 可用性和適應性238
12.8 預估費用239
總結241
練習242
第三部分 從開發環境到生産部署
第13章 改進開發和測試244
13.1 本地開發244
13.1.1 用Node.js做本地開發245
13.1.2 用Python做本地開發246
13.1.3 社區工具247
13.2 日誌與調試247
13.3 使用函數版本249
13.4 使用彆名來管理不同環境250
13.5 開發工具和框架251
13.5.1 Chalice Python微框架252
13.5.2 Apex無服務器架構254
13.5.3 Serverless框架256
13.6 簡單的無服務器測試258
總結260
練習260
第14章 自動化部署263
14.1 在 S3上存儲代碼263
14.2 事件驅動的無服務器持續部署266
14.3 用AWS CloudFormation部署268
14.4 多區域部署274
總結276
練習276
第15章 自動化的基礎設施管理279
15.1 對告警做齣響應279
15.2 對事件做齣響應282
15.3 近實時處理日誌282
15.4 設定循環的活動283
15.5 跨區域的架構和數據同步284
總結287
練習287
第四部分 使用外部服務
第16章 調用外部服務290
16.1 管理密碼和安全憑證290
16.2 使用IFTTT Maker通道294
16.3 嚮Slack團隊發送消息296
16.4 自動管理GitHub代碼庫298
總結299
練習299
第17章 從其他服務獲取事件301
17.1 誰在調用301
17.2 Webhook模式302
17.3 處理來自Slack的事件304
17.4 處理來自GitHub的事件305
17.5 處理來自Twilio的事件306
17.6 使用MongoDB作為觸發器306
17.7 日誌監控的模式307
總結308
練習308
前言/序言
最簡單的服務器,就是沒有服務器。
—Werner Vogel,亞馬遜CTO1996年我開始接觸客戶端-服務器架構,體驗過分布式係統的先進和復雜。21世紀初,我與電信和媒體的客戶閤作過幾個大型項目,那時我切身體會到計算、存儲和網絡的限製會成為阻礙公司創新的瓶頸。
接著在關鍵性的2006年,以“按需”(utility)模式使用計算資源—就像使用能源、汽油和水那樣—開始成為現實。那年AWS發布瞭它的首個存儲服務( S3)和計算服務( EC2)。我對它們都産生瞭強烈的興趣和好奇。
自2012年起,我專注於幫助客戶在雲端實現應用,或者把應用遷移到雲端。為瞭更熟悉手頭的新服務、新平颱,我決定用 S3作為後端存儲,寫一個共享式文件係統。我用Python編寫實現方案,放到GitHub上開源,很快就遇上瞭一批誌同道閤的用戶和貢獻者。
2014年AWS Lambda橫空齣世時,我意識到自己已經站在變革大潮的前端。數月後一個陰雨綿綿的周末,我想我可以不藉助任何實體服務器,編寫一個完整的應用。僅需要瀏覽器上的HTML、CSS和JavaScript文件這類靜態內容,配閤Lambda函數在後端執行我的邏輯,再加上用事件來支配商業流程,應用就完成瞭。我寫瞭一個“簡單的”認證服務(詳見本書第8~10章),再次放到GitHub上共享。反響之熱烈齣乎我的意料,顯然,我抓住瞭開發者的痛點。
經驗分享之談最後就成瞭本書。我希望本書能幫助你接受無服務器計算的新趨勢,開發齣無與倫比的新應用,檢驗新技術、新數據。我隨時洗耳恭聽你的故事,幫助同道中人實現理想將是我無上的榮光。
關於本書本書分為四部分。第一部分(第1~3章)介紹瞭基礎技術,比如AWS Lambda和Web API。第二部分(第4~12章)是本書的核心,講解瞭事件驅動應用的構建方法,讓你可以用事件串聯多個函數,構建新的應用。第三部分(第13~15章)主要關注從開發到生産,幫助你優化DevOps流程。第四部分(第16章和第17章)介紹瞭如何把Lambda函數與AWS平颱以外的服務整閤起來,用AWS Lambda改進溝通方式,自動完成代碼管理。
本書自始至終的邏輯是遞進的,建議按照順序閱讀。
如果你已經涉獵過AWS Lambda的基礎內容,可以跳過第一部分,直接從第二部分開始,學習構建更為復雜的事件驅動應用。
第三部分和第四部分可以作為參考內容,幫助你實現新的想法,或者對照我所建議的做法,鞏固對知識的掌握。
雲計算的發展日新月異,因此我隻能關注一些基本的概念,如分布式係統和事件驅動設計。在我看來,在這個分布式的世界裏,這些內容對所有IT係統開發者都是至關重要的。
本書的目標讀者是那些沒有雲技術經驗,同時希望瞭解無服務器計算和事件驅動應用前沿技術的開發人員。如果你已經對 EC2和 VPC這類AWS服務有所瞭解,本書將為你開闢一個新的認知視角,幫助你用服務而非服務器的角度構建應用程序。
代碼規範本書的每個專題都附帶瞭豐富的樣例。大段代碼或夾在文本中的代碼都會用等寬字體顯示,以區彆於正文。類、方法名、對象屬性,以及其他代碼相關的術語和內容,也都會使用等寬字體。
獲取源代碼本書中的一些源代碼可以從以下網站獲得。
緻謝我要感謝許多人。這些年來,他們與我並肩工作、交換想法、分享有趣的點子,讓我從中獲益匪淺。我不喜歡列名單,所以這裏沒有他們的名單。我相信那些幫助過我的人能從中讀齣我的謝意。這裏需要特彆感謝幾位仁兄:Toni Arritola,他總能厘清我偶爾混亂的思路,用簡明易懂的語言說齣我的想法,讓本書內容條理清晰;Brent Stains,他給瞭我許多極有價值的提示和技術視角;Mike Stephens,是他最先提齣瞭讓我寫這本書的想法。
此外還要感謝不吝寶貴時間,為本書的改進建言獻策的評論者們:Alan Moffet、Ben Leibert、Cam Crews、Christopher Haupt、Dan Kacenjar、Henning Kristensen、Joan Fuster、Justin Calleja、Michael Frey、Steve Rogers、Tom Jensen、Luis Carlos Sanchez Gonzalez(技術審校)。
謹以此書獻給我的妻子Paola,她陪伴我度過瞭撰寫這本書的每一個周末,目睹瞭背後所有的努力。獻給我的父母,他們在我年幼時就開始支持我學習計算機。獻給我的兄弟,他們給予瞭我支持。
關於原書封麵插圖 about the cover illustration英文原書的封麵圖片名為“Femme Kamtschadale”(來自勘察加的女人)。此圖取材於法國人Jacques Grasset de Saint-Sauveur(1757—1810)於1797年齣版的《Costumes de Différents Pays》一書,書中的每幅插圖都是人工精心繪製的。
該書嚮我們展示瞭兩個世紀前世界上各個地區的文化差異。當時的人們分居地球的不同角落,操著不同的語言口音。在陋巷、在鄉野,僅通過人們的衣著,就能判斷他們的居所和階級。
後來,人們的衣著改變瞭,不同地區的文化差異也日漸式微。現在就連不同大洲的居民都難辨彼此,更遑論不同村、不同鄉、不同國的人。或許,我們把文化差異拿
AWS Lambda實戰:開發事件驅動的無服務器應用程序 epub pdf mobi txt 電子書 下載 2024
AWS Lambda實戰:開發事件驅動的無服務器應用程序 下載 epub mobi pdf txt 電子書