AWS Lambda 實戰 : 開發事件驅動的無服務器應用程序 (AWS Lambda in Action: Event-Driven Serverless Applications)

達尼洛·波恰 (Danilo Poccia)

買這商品的人也買了...

商品描述

本書以實例為驅動,教會讀者如何使用事件驅動的方法來開發後端應用程序。

從AWSLambda的基礎介紹開始,逐漸深入地講解了從Web或移動端調用Lambda函數的常見例子和模式。本書的第二部分把這些簡單的例子組合在一起,構成了一個更大的應用。

讀者將學會如何在AWS平臺上構建應用程序,滿足高可用性、高安全性、高性能和高擴展性的要求。

作者簡介

Danilo Poccia是Amazon 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 Amazon 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 Amazon Cognito身份管理服務概述100 
6.2外部身份提供方103 
6.3集成自定義身份認證104 
6.4處理認證和非認證用戶105 
6.5使用Amazon 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使用Amazon 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在Amazon S3中定義對象的命名空間202 
11.3為Amazon 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在Amazon 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