第一本從無到有教你撰寫 AWS CDK 的中文書籍!
為不會寫的你獻上超豐富 Sample Code,照抄也能成為 AWS CDK 達人!
內容簡介:
本書改編並延伸自第 12 屆 iT 邦幫忙鐵人賽獲得 DevOps 組冠軍的《用 CDK 定義 AWS 架構》系列文章,以簡單、好讀的行文風格詳述技術細節,並提供完整的程式碼範例與說明,一步一步帶領新手從零開始踏上 AWS CDK 技術達人之路。
一般而言,在 AWS 上部署雲端基礎架構有兩種做法:使用 AWS CloudFormation、或直接使用 AWS 管理主控台 (AWS Management Console) 手動建置。
在 2019 年時,AWS 推出了全新的開發套件 AWS Cloud Development Kit (AWS CDK),透過利用 AWS CDK 套件,開發者可以定義整個雲端基礎架構使用程式的方法,同時提升可讀性,並可撰寫測試程式來減少失誤的可能性,此外,還可以達到快速複製的效果。
然而,目前為止 AWS CDK 最美中不足的一點,便是可利用的中文資源仍相當稀少,因此本書希望以新手開發者的角度出發,用熟悉的中文伴隨大家走過艱辛的前段上手過程,本書內容將會使用 AWS 管理主控台配合 AWS CDK 程式,使用交互比對的方式協助讀者裡解、並從入門到精通 AWS CDK。
書籍特色:
中文書籍
學習一款新的軟體,最令人擔憂的往往是閱讀英文文件所需大量耗費的時間。
全亞洲第一本 CDK 中文書,用中文帶你快速上手、學習撰寫 AWS CDK。
一步一腳印
從使用 AWS CDK 指令開始,以新手角度出發,透過 Code Review 的形式,帶你理解每一行 Code 代表的意義,一步一步帶領你走入學習 AWS CDK 的大門。
高實用性的工具書
本書內容囊括多種因應工作場景可能須開發的主題,讀者可將本書當作工具書,依據使用情境找到合適的章節並直接參考取用。
自動化部署 LAMP(Linux、Apache、MariaDB、PHP)叢集
對於大多數的開發者來說,親手製作可自動化部署的 LAMP 伺服器並非一件容易的事情,本書針對 LAMP 的自動化部署提供詳盡的解說,讓閱讀後的你也能輕鬆使用 EC2 打造高可用可自動部署的 LAMP 伺服器叢集。
在 AWS 上部署 Docker 容器解決方案
在 AWS 上有多種 Docker 容器解決方案,在什麼狀況下要使用 ECS 或是 EKS,讓你傻傻分不清楚嗎?本書將以入門等級的簡單範例,協助讀者理解 ECS 與 EKS 兩種服務,並教會你如何根據應用情境挑選合適的容器部署解決方法。
開發自動部署的 CDK Construct Library
寫出好用的程式後分享給更多人吧!
教你如何從無到有寫一個自己的 CDK Construct Library,無論運用在開源貢獻、公司專案或私人案件,成為自己 Library 自己開發的技術達人。
好評推薦:
本書將會是華人社群裡面最珍貴的 CDK 參考書之一, 期待越來越多人可以透過這本書一窺 CDK 的奧妙, 並且跟著 Clarence 一起學習, 讓再複雜的 Cloud 也都可以在自己的 IDE 開發環境裡面自由定義與掌握。
Pahud Hsieh / Pahud Dev Youtube頻道主
Clarence 在本書中由簡入深、逐一搭配一個個的場景案例,且細心繪製情境架構圖、配合著場景案例整理範例程式碼,帶大家一步一步上手 AWS CDK。
Ernest Chiang / AWS Community Hero
Director of Product & Technology Integration, PAFERS Tech
透過本書你可以輕鬆地踏入 AWS CDK 的世界, 裡面有許多的範例可以涵蓋你日常的實用情境, 讓你除了學 AWS CDK 之外還可以學 AWS 架構, 體驗到 AWS CDK 的強大之處, 為你增加硬技能。
Neil Kuan / AWS Community Builder
Cloud Engineer, Cathay FHC established Digital, Data & Technology (DDT)
作者簡介:
林侃賦(Clarence)
現職
⭐️ 長問科技雲端技術資深工程師
⭐️ 田茂智能互聯雲端解決方案技術
顧問
⭐️ 天銳國際實業雲端技術顧問
⭐️ 綠頁技術顧問
曾任
⭐️ SITCON Camp 2015副召集人
⭐️ SITCON、COSCUP、HITCON 等資訊社群研討會擔任工作人員
⭐ 長期從事網站後端開發、DevOps、Linux作業系統、雲端系統架構設計以及雲端系統安全等工作。
⭐ 經營個人部落格,樂於分享技術知識,並將平時開發過程遭遇的問題撰寫成文章,向讀者分享解決方法。
⭐ 第12 屆 iT 邦幫忙鐵人賽 DevOps 組以《CDK 定義 AWS 架構》榮獲冠軍。
Twitter
https://twitter.com/clarence_lin
部落格
https://blog.clarence.tw
Facebook 粉絲專頁
https://fb.me/ClarenceTaiwan
目錄
第1章 AWS CLOUD DEVELOPMENT KIT (AWS CDK)
1.1 . AWS Cloud Development Kit(AWS CDK)基礎介紹
1.1.1 AWS CDK 可以解決的問題
1.1.2 AWS CDK 的介紹
1.2 安裝 AWS CDK Toolkit(cdk command)
1.2.1 安裝 AWS CLI version 2 macOS
1.2.2 安裝 AWS CLI version 2 Windows
1.2.3 安裝 AWS CDK Toolkit macOS
1.2.4 安裝 AWS CDK Toolkit Windows
1.3 設定 AWS CLI
1.3.1 使用 aws configure 設定 AWS CLI
1.3.2 aws configure 加入設定檔名稱
1.4 你的第一個 AWS CDK 專案
1.5 CDK 指令介紹
1.6 參考資源
第2章 CDK SAMPLE 學習之路
2.1 如何開始 AWS CDK 的學習
2.1.1 分析 AWS CDK sample-app
2.1.1.1 資料夾與檔案的簡略介紹
2.1.1.2 bin/hello-cdk.ts程式介紹
2.1.1.3 lib/hello-cdk-stack.ts程式介紹
2.2 執行 AWS CDK sample-app
2.3 簡易修改 AWS CDK sample-app
2.3.1 移除設定值修改回預設
2.3.2 新增 Outputs
2.3.3 執行修改過後的 CDK
2.4 移除整個 sample-app
2.4.1 確定 CloudFormation 有看到 HelloCdkStack
2.4.2 確定 HelloCdkStack 消失在 CloudFormation
2.5 本章小結
第3章 使用 AWS CDK部署 SERVERLESS 應用程式
3.1 Serverless 介紹
3.1.1 傳統的機房部署
3.1.2 AWS 提供的 Serverless 服務有哪些
3.2 使用 AWS CDK 建立 API Service
3.2.1 建立 AWS CDK 專案名稱 APIService
3.2.2 修改 AWS CDK Lambda 讓 Lambda 程式使用獨立檔案
3.2.3 處理 AWS CDK API Gateway 限定進入 Lambda 的 API Path
3.2.4 修改 AWS CDK API Gateway讓每個 API 程式使用獨立檔案
3.3 使用 AWS CDK 建立 API Service 支援自訂網域
3.4 本章小結
第4章 使用 AWS CDK部署靜態網站
4.1 靜態網頁與動態網頁的區分
4.2 使用 AWS CDK 建立靜態網頁服務
4.3 使用 AWS CDK 建立靜態網頁服務並設定 CloudFront 與自訂網域
4.4 . 本章小結
第5章 使用 AWS CDK 部署可自動擴展的 LAMP 伺服器叢集
5.1 Amazon EC2 執行個體
5.2 Amazon VPC
5.2.1 使用 AWS CDK 定義 Amazon VPC
5.2.1.1 預設的 AWS CDK Amazon VPC 定義
5.2.1.2 修改預設 AWS CDK Amazon VPC NAT Gateway 數量為 0
5.2.1.3 減少預設 AWS CDK Amazon VPC NAT Gateway 數量
5.3 AWS CDK 部署 Amazon EC2
5.3.1 部署 Amazon EC2 使用 Key pair
5.3.2 部署 Amazon EC2 使用 AWS Session Manager
5.3.3 部署 Amazon EC2 使用 Default VPC
5.4 使用 AWS CDK 架設 LAMP
5.4.1 Bastion Host
5.4.1.1 使用 AWS CDK 架設Bastion Host
5.4.1.2 藉由 AWS SSM 讓本機可以使用 SSH 連線到 EC2
5.4.2 使用 CDK 自動部署 LAMP 伺服器
5.4.2.1 LAMP 腳本撰寫
5.4.2.2 EC2 使用 User data 執行LAMP 安裝腳本
5.5 部署含有負載平衡的 LAMP 伺服器
5.5.1 Elastic Load Balancing
5.5.1.1 使用 AWS CDK 部署 Application Load Balancer
5.5.1.2 使用 AWS CDK 部署 Network Load Balancer
5.6 部署可自動擴展的 LAMP 伺服器
5.6.1 Auto Scaling
5.6.1.1 使用 AWS CDK 部署 Auto Scaling
5.7 本章小結
第6章 使用 AWS CDK 部署可自動擴展的 AMAZON ELASTIC CONTAINER SERVICE (AMAZON ECS)叢集
6.1 Amazon Elastic Container Service (Amazon ECS)
6.2 使用 ECS 部署 Web Service
6.2.1 使用 Amazon EC2 與 Amazon EC2 Spot 部署 ECS Cluster
6.2.2 使用 Amazon EC2 與 Amazon EC2 Spot 部署 ECS Task 與 Service
6.2.3 使用 Amazon EC2 與 Amazon EC2 Spot 部署 ECS Web 服務
6.2.4 使用 AWS Fargate 與 AWS Fargate Spot 部署 ECS Web 服務
6.2.4.1 ECS 使用 AWS Fargate的好處
6.2.4.2 ECS 使用 AWS Fargate的壞處
6.2.5 使用 AWS Fargate 與 Amazon EC2 Spot 混搭部署 ECS Web 服務
6.3 使用 ECS 部署多 Port 服務
6.4 使用 ECS 部署 Web Service 與整合 RDS 資料庫
6.4.1 Amazon Relational Database Service(Amazon RDS)
6.4.2 Amazon Aurora
6.4.3 使用 AWS CDK 部署 Amazon Aurora RDS
6.4.4 ECS Task 使用 AWS Secret Manager 保管的密碼
6.5 本章小結
第7章 使用 AWS CDK 部署AMAZON ELASTIC KUBERNETES SERVICE(EKS)
7.1 Amazon Elastic Kubernetes Service (Amazon EKS)
7.1.1 AWS EKS 發布歷史
7.1.2 AWS EKS 價格
7.1.3 AWS EKS 架構
7.1.4 AWS CDK 部署AWS EKS
7.1.4.1 AWS CDK 部署 AWS EKS 使用 EC2 Instance
7.1.4.2 AWS CDK 部署 AWS EKS 使用 EC2 Spot
7.1.4.3 AWS CDK 部署 AWS EKS 將機器加入 Taint
7.1.4.4 AWS CDK 部署 AWS EKS 使用 GPU 類型 EC2 Instance
7.1.4.5 AWS CDK 部署 AWS EKS 使用 Inf1 類型 EC2 Instance
7.1.4.6 AWS CDK 部署 AWS EKS 創建含有 GPU 的 Pod
7.1.4.7 AWS CDK 部署 AWS EKS 創建含有 AWS Inferentia 的 Pod
7.1.4.8 AWS CDK 部署 AWS EKS Service
7.2 本章小結
第8章 AWS CDK 使用CONSTRUCT LIBRARY
8.1 使用 projen 讓 AWS CDK更簡單更好處理
8.1.1 為什麼要使用 projen
8.1.2 AWS CDK 專案更新成 projen 專案
8.1.2.1 創建 projen 專案
8.1.2.2 移動主程式到 src 資料夾
8.1.2.3 修改測試程式
8.1.2.4 修改成 projen 後部署到 AWS 試試看
8.1.2.5 使用 projen 排除檔案
第9章 製作 CDK CONSTRUCT LIBRARY
9.1 第一個 CDK Construct Library 範例
9.1.1 計畫Library的介面
9.1.2 使用 projen 建立CDK Construct Library專案
9.1.3 撰寫 CDK Construct Library主程式
9.1.4 撰寫 CDK Construct Library測試
9.1.5 上傳 CDK Construct Library到 GitHub
9.1.5.1 創建 npm Access Token
9.1.5.2 填入 npm Access Token 到 GitHub Secrets
9.1.5.3 Push NyanCat 到 GitHub Repo
9.1.5.4 查看 npm 發布
9.1.6 發步 CDK Construct Library到 PyPI
9.1.6.1 註冊 PyPI 與取得 PyPI API Token
9.1.6.2 註冊 Mergify 讓 GitHub 支援自動批准與自動合併
9.1.6.3 修改 projen 支援 PyPI 發布
9.1.7 產生 CDK Construct Library 文件
9.1.8 更新 CDK Construct Library
9.1.9 CDK Construct Library 自動升級依賴
9.1.9.1 取得 GitHub Personal Access Token
9.1.9.2 新增 projen 支援定期自動升級依賴
9.1.9.3 projen定期自動升級依賴
9.1.9.4 projen定期自動升級依賴沒有自動 Merge
9.2 本章小結
附錄 A
A.1 安裝 VISUAL STUDIO CODE 並安裝 AWS TOOLKIT
A.2 安裝 TYPESCRIPT 套件使用 NPM 或 Yarn
A.3 安裝 AWS SESSION MANAGER
A.4 KUBERNETES TOOLS安裝
A.5 CDK 錯誤處理
A.6 CDK 開發小撇步
第1章 AWS CLOUD DEVELOPMENT KIT (AWS CDK)
1.1 . AWS Cloud Development Kit(AWS CDK)基礎介紹
1.1.1 AWS CDK 可以解決的問題
1.1.2 AWS CDK 的介紹
1.2 安裝 AWS CDK Toolkit(cdk command)
1.2.1 安裝 AWS CLI version 2 macOS
1.2.2 安裝 AWS CLI version 2 Windows
1.2.3 安裝 AWS CDK Toolkit macOS
1.2.4 安裝 AWS CDK Toolkit Windows
1.3 設定 AWS CLI
1.3.1 使用 aws configure 設定 AWS CLI
1.3.2 aws configure 加入設定檔名稱
1.4 你的第一個 AWS CDK 專案
1.5 CDK 指令介紹
1.6 參考資源
第2章 CDK SAMPLE 學習之路
...