AWS Cookbook 以實務為導向,針對常見的 AWS 使用情境提供超過 70 個解決方案,涵蓋安全設定、網路組態、儲存管理、資料函式庫操作、無伺服器架構佈署以及容器應用等導向。每個配方都包含問題描述、解決方案圖表、逐步操作說明和可執行的程式碼,並強調安全性和清理步驟,降低操作風險和成本。本文也引導讀者運用 AWS CLI 和 CDK 等工具,提升操作效率並實踐 IaC 理念,適合不同程度的 AWS 使用者,無論是初學者入門或資深工程師尋找最佳實務參考,都能從中獲益。書中更強調成本控管、安全性最佳實務和資源清理的重要性,幫助讀者建立良好的雲端使用習慣。

AWS Cookbook 深度解析:真實案例與實務應用

AWS Cookbook 是一本專為 AWS 使用者設計的實務,透過超過 70 個獨立的實用配方,幫助讀者解決在雲端旅程中常見的挑戰。本文作者 John Culkin 和 Mike Zazon 提供了真實世界的範例,結合最佳實踐,每個配方都包含了一個視覺化元件的圖表,以及可安全執行的程式碼,以確保解決方案如預期般運作。

揭開 AWS 檔案的現實缺口

正如 Corey Quinn 所說,官方的 AWS 檔案往往缺乏「現實感」。大多數使用者並不是為了收集盡可能多的 AWS 服務而競爭;他們的目標是在非理論環境中完成具體任務。AWS Cookbook 正是為了滿足這類別真實使用者的需求而誕生,提供了一系列實用配方和範例,供所有人學習和參考。

主要功能與技術亮點

本文涵蓋了多個關鍵的 AWS 技術和應用場景,包括但不限於:

  1. 使用 Amazon Comprehend 移除個人識別資訊(PII)
    透過自然語言處理技術,保護敏感資料的安全性和隱私。

  2. 自動化 Amazon RDS 資料函式庫密碼輪換
    提高資料函式庫安全性,減少人工干預,降低安全風險。

  3. 利用 VPC Reachability Analyzer 驗證和故障排除網路連線問題
    簡化網路組態和故障排除流程,確保網路路徑的正確性。

  4. 加強 Amazon Simple Storage Service(S3)儲存桶的安全性
    透過精細的存取控制和加密措施,保護儲存在 S3 中的資料。

  5. 分析 AWS Identity and Access Management(IAM)策略
    確保 IAM 策略的最佳實踐,降低安全漏洞風險。

  6. 容器化服務的自動擴充套件
    根據負載需求動態調整資源,提高應用程式的可用性和成本效益。

作者背景與專業見解

  • John Culkin 是 AWS 的資深解決方案架構師,專注於利用雲端服務創造具有轉變性的商業解決方案。
  • Mike Zazon 是 AWS 的資深雲端架構師,在工程研究大學環境中工作時對技術教育產生了濃厚興趣。

兩位作者結合了豐富的實務經驗和教學熱情,為讀者提供了深入淺出的技術指導和創新的解決方案。

業界評價與推薦

  • Corey Quinn(The Duckbill Group 首席雲經濟學家):「AWS Cookbook 為真實使用者提供了實用配方和範例,彌補了官方檔案的不足。」
  • Gaurav Raje(《Security and Microservice Architecture on AWS》作者):「本文包含了豐富的 AWS 使用案例和易於遵循的參考實作,非常適合喜歡透過實踐學習的人。」
  • Adrian Cantrill(AWS 培訓師):「這是我讀過最密集的 AWS 技巧和竅門書籍,如果你每天都在使用 AWS,這本文是你工具包中不可或缺的一部分。」
  • Drew Firment(AWS 社群英雄和 Pluralsight 企業策略師):「將 AWS 實踐於實際場景是區分雲端素養和雲端流暢度的關鍵,AWS Cookbook 提供實用的雲端工作場景,有助於個人提升職業技能。」

AWS 雲端技術深度解析與實踐

在當今的數位轉型時代,企業對於雲端運算的需求日益增長。AWS(Amazon Web Services)作為全球領先的雲端運算平台,提供了豐富的服務和功能,幫助企業實作高效、靈活和安全的雲端佈署。本文將根據提供的目錄,探討 AWS 的多個技術領域,包括安全、網路、儲存、資料函式庫、無伺服器架構、容器、大資料以及 AI/ML 等,並提供實務操作和最佳實踐。

安全

安全是雲端運算的首要考量。AWS 提供了一系列的安全服務和功能,以確保客戶的資源和資料得到充分保護。

使用 IAM 角色進行開發者存取

在 AWS 中,IAM(Identity and Access Management)角色是一種重要的安全機制,用於控制對 AWS 資源的存取。透過建立和承擔 IAM 角色,開發者可以獲得必要的許可權來執行其任務。


### 建立 IAM 角色步驟:
1. 登入 AWS 管理控制檯。
2. 導航至 IAM 儀錶板。
3. 選擇「角色」並點選「建立角色」。
4. 選擇「AWS 服務」作為信任實體。
5. 選擇需要使用該角色的服務。
6. 新增所需的許可權策略。
7. 為角色命名並建立。

使用 IAM Policy Simulator 測試 IAM 策略

IAM Policy Simulator 是用於測試和驗證 IAM 策略的工具。它允許管理員模擬不同的使用者操作,以檢查策略是否按預期工作。


#### 使用 IAM Policy Simulator:
1. 開啟 IAM 控制檯。
2. 導航至「策略」部分。
3. 選擇要測試的策略。
4. 使用 Policy Simulator 模擬不同操作。

使用 KMS 金鑰加密 EBS 卷

加密 EBS(Elastic Block Store)卷是保護資料安全的重要措施。AWS Key Management Service(KMS)提供了建立和管理加密金鑰的功能。


### 加密 EBS 卷步驟:
1. 建立 KMS 金鑰。
2. 將 KMS 金鑰與 EBS 卷關聯。
3. 啟用 EBS 卷的加密功能。

使用 Secrets Manager 儲存和存取密碼

AWS Secrets Manager 是一種安全儲存和管理敏感資訊的服務,如資料函式庫密碼和 API 金鑰。


#### 使用 Secrets Manager:
1. 在 Secrets Manager 中建立秘密。
2. 組態秘密的輪換策略。
3. 在應用程式中使用秘密。

網路

網路組態是 AWS 環境中的另一個重要方面。正確組態網路可以確保資源之間的順暢通訊和安全連線。

建立 VPC 和子網

VPC(Virtual Private Cloud)是 AWS 中的虛擬網路環境。透過建立 VPC 和子網,可以隔離和組織資源。


### 建立 VPC 和子網步驟:
1. 登入 AWS 管理控制檯。
2. 導航至 VPC 儀錶板。
3. 建立 VPC 和子網。
4. 組態路由表和網路 ACL。

使用 NAT 閘道器實作私有子網的出站網際網路存取

NAT(Network Address Translation)閘道器允許私有子網中的資源存取網際網路,同時保持其私有 IP 地址的隱藏。


#### 組態 NAT 閘道器:
1. 在公有子網中建立 NAT 閘道器。
2. 更新私有子網的路由表以指向 NAT 閘道器。

儲存

儲存是雲端運算中的基礎設施之一。AWS 提供了多種儲存服務,以滿足不同的需求。

使用 S3 生命週期策略降低儲存成本

S3(Simple Storage Service)是 AWS 的物件儲存服務。透過組態生命週期策略,可以自動管理物件的儲存類別和刪除規則,從而降低成本。


### 組態 S3 生命週期策略:
1. 登入 AWS 管理控制檯。
2. 導航至 S3 儀錶板。
3. 選擇要組態的儲存桶。
4. 新增生命週期規則。

使用 S3 Intelligent-Tiering 自動歸檔 S3 物件

S3 Intelligent-Tiering 是一種自動化的儲存類別管理服務,可以根據物件的存取模式自動調整其儲存類別,以最佳化成本。


#### 組態 S3 Intelligent-Tiering:
1. 在 S3 儲存桶中啟用 Intelligent-Tiering。
2. 組態 Intelligent-Tiering 的規則。

資料函式庫

資料函式庫是許多應用程式的核心元件。AWS 提供了多種資料函式庫服務,以滿足不同的需求。

建立 Amazon Aurora Serverless PostgreSQL 資料函式庫

Amazon Aurora 是 AWS 的關係型資料函式庫服務。Aurora Serverless 提供了一種無伺服器架構的資料函式庫解決方案,可以根據工作負載自動擴充套件或縮減。


### 建立 Aurora Serverless PostgreSQL 資料函式庫:
1. 登入 AWS 管理控制檯。
2. 導航至 RDS 儀錶板。
3. 選擇 Aurora 並建立資料函式庫叢集。
4. 組態為 Serverless 模式。

使用 RDS Proxy 管理資料函式庫連線

RDS Proxy 是用於管理資料函式庫連線的服務,可以提高應用程式的可擴充套件性和安全性。


#### 組態 RDS Proxy:
1. 在 RDS 控制檯中建立 RDS Proxy。
2. 組態 Proxy 的端點和目標群組。
3. 更新應用程式以使用 RDS Proxy 端點。

無伺服器架構

無伺服器架構是一種雲端運算模型,允許開發者構建和執行應用程式而無需管理底層伺服器。

組態 ALB 以呼叫 Lambda 函式

Application Load Balancer(ALB)可以用於將請求路由到 Lambda 函式,從而實作無伺服器架構的 Web 應用程式。


### 組態 ALB 呼叫 Lambda:
1. 在 ALB 中建立目標群組並選擇 Lambda 函式作為目標。
2. 組態 ALB 的監聽器規則以將請求轉發到 Lambda 目標群組。

使用 Lambda Layers 封裝函式庫

Lambda Layers 提供了一種管理 Lambda 函式依賴項的方法,可以簡化程式碼封裝和佈署過程。


#### 使用 Lambda Layers:
1. 建立 Lambda Layer 並上傳依賴項包。
2. 在 Lambda 函式組態中參照 Layer。

前言

身為亞馬遜網路服務(AWS)團隊的成員,我得以從獨特的角度觀察其規模、豐富性和複雜性的成長。即使在撰寫了數千篇部落格文章和數百萬字之後,我幾乎每天都能學到關於AWS的新知識。

AWS目前已推出超過兩百項服務,並且新服務不斷推出,這很容易讓人感到不知所措。除了數萬頁的官方AWS檔案外,部落格作者、AWS Heroes、AWS合作夥伴和其他人也創造了無數的內容,包括部落格文章、影片、網路研討會、綜述和程式碼範例。

雖然對特定的AWS服務有全面完整的理解是無可取代的,但現實是你往往只需要解決一個「特定」的問題。即使你理解了某項服務,要記住如何使用它來解決那個問題仍然是一個挑戰——至少對我來說是如此。

而這正是本文的作用所在。由於其廣泛的主題選擇和精心挑選的實作範例,我相信你將能夠快速找到一個符合你即時需求的實作範例,並在短時間內將其付諸實行。你可以解決你的問題,更新你對AWS某個方面的知識,並繼續為你的客戶創造價值!

我最喜歡本文的一點是,它沒有忽略任何細節。每個實作範例都假設你從零開始,然後幫助你構建出一個完美的解決方案。沒有任何事情是被隨意帶過的,在大多數情況下,你可以直接使用這些實作範例。這些實作範例還涵蓋了重要的清理階段,確保你讓你的AWS環境保持原樣。

在適當的地方,這些實作範例使用了AWS雲端開發套件(CDK),並包含了所有必要的「移動部件」。CDK提供了雙重好處;除了幫助你更快地推進外,這些CDK元素還可以幫助你學習如何將基礎設施作為程式碼(IaC)付諸實踐。

大多數食譜書都設計成可以被瀏覽和品味的,而本文也不例外。你可以隨意翻閱,閱讀整個章節,或使用一兩個實作範例。我還建議你仔細閱讀第一章,以確保你的環境已經設定好並準備就緒。然後,當你遇到需要解決的問題時,找到合適的實作範例,將其付諸實行,並收穫成果。

— Jeff Barr
AWS副執行長兼首席佈道師
西雅圖,WA
2021年11月

序言

絕大多數的工作量將轉移到雲端。
我們只是剛剛開始——還有許多事情會發生。
— Andy Jassy

在過去的十年中,雲端的採用率一直在企業和小型企業中不斷增長,並持續加速。Gartner表示,2020年全球基礎設施即服務(IaaS)公有雲端服務市場增長了40.7%。雲端的快速增長導致許多組織對雲端技能的需求大增。許多IT專業人員瞭解雲端的基本概念,但希望能夠更熟練地在雲端工作。雲端技能的供需差距為個人提供了提升職業生涯的重要機會。

透過我們合計超過20年的雲端經驗,我們曾參與許多不同的AWS專案,並為數百名開發人員提供關於何時以及如何使用AWS服務的指導。這使我們能夠瞭解雲端常見的挑戰和成功的經驗。我們希望與您分享這些經驗,並為您的進步提供助力。我們撰寫這本文的目的是分享我們的知識,並幫助您快速獲得在雲端工作所需的技能。我們希望您能在未來幾年內將這本文作為參考資料。

本文適合物件

本文適合所有級別的開發人員、工程師和架構師,從初學者到專家。初學者可以學習雲端的概念,並在與雲端服務合作中變得更加舒適。專家可以檢查用於建立實作範例基礎的程式碼,探索新的服務,並獲得額外的見解。如果大量的雲端服務和組合讓您感到不知所措,那麼本文適合您。本文中的實作範例旨在提供「Hello, World」概念驗證和企業級應用的元件。這將透過常見的使用案例和指導性的場景來實作,您可以直接將其應用於您當前或未來的工作。這些經過篩選和具有建立經驗價值的實作範例旨在揭開服務的神秘面紗,並立即提供價值,無論您的AWS經驗水平如何。

您將學到什麼

除了開啟新的職業機會外,能夠掌握AWS的力量將使您能夠建立強大的系統和應用程式,以解決當今世界許多有趣且具有挑戰性的問題。您是否希望像西門子一樣使用AWS機器學習處理每秒60,000個網路威脅?或者像Capital One一樣減少您的組織的本地足跡並擴大其微服務的使用?如果是這樣,本文中的實際範例將透過提供具體的例子來幫助您加快學習速度,展示如何將AWS的構建模組組合在一起,形成實際的解決方案,以應對常見的場景。雲端的按需消費模型、龐大的容量、先進的功能和全球足跡創造了需要被探索的新可能性。

實作範例

我們將本文分成專注於一般技術領域(例如安全、網路、人工智慧等)的章節。章節中的實作範例是小型的、自成體系的,並且易於理解。實作範例的長度和複雜度各不相同。每個實作範例都有一個問題陳述、解決方案(附圖)和討論。問題陳述被嚴格定義以避免混淆。解決方案包含所需的準備工作和步驟,以引導您完成實作目標所需的工作。在適當的時候,將提供明確的驗證檢查。我們還為實作範例增加了額外的挑戰,以幫助您進一步學習,如果您願意的話。最後,我們以簡短的討論結束每個實作範例,以幫助您理解解決方案及其重要性,提供擴充套件解決方案的建議,以及利用它產生實際影響的方法。

為了保持您的AWS帳單低廉並保持帳戶整潔,每個實作範例都提供了清理步驟,這些步驟位於與本文相關的儲存函式庫中。

每個章節都有其自己的儲存函式庫,位於https://github.com/awscookbook。儲存函式庫包含準備步驟,以便於複製和貼上、所需檔案和基礎設施即程式碼。我們還建立了GitHub範本,用於報告錯誤和建議新的實作範例。我們鼓勵您利用GitHub提交問題、請求新的實作範例並提交您的提取請求。我們將積極維護章節儲存函式庫,更新實作範例步驟和README檔案中的程式碼。請務必檢查這些內容,以取得任何新的或替代的資訊。

AWS 雲端烹飪書:入門與技術解析

開始之前:環境設定與需求

在開始使用 AWS 雲端烹飪書之前,您需要準備以下內容:

  1. AWS 帳戶:建立一個 AWS 帳戶,並設定一個具有管理員許可權的 IAM 使用者。
  2. 個人電腦/筆記型電腦:一台能夠執行終端機和瀏覽器的電腦。
  3. 軟體需求
    • 網頁瀏覽器(例如:Microsoft Edge、Google Chrome 或 Mozilla Firefox)
    • 終端機(支援 bash 或 Z shell)
    • Git
    • 程式碼編輯器(例如:VSCodium 或 AWS Cloud9)
    • AWS CLI 版本 2(2.1.26 或更新版本)
    • Python 3.7.9(以及 pip)或更新版本
    • AWS Cloud Development Kit(CDK)版本 2.0 或更新版本

環境設定步驟

  1. 建立 AWSCookbook 資料夾:在您的主目錄下建立一個名為 AWSCookbook 的資料夾,用於存放各個章節的程式碼倉函式庫。
    mkdir ~/AWSCookbook && cd ~/AWSCookbook
    
  2. 複製程式碼倉函式庫:使用 Git 複製所需的程式碼倉函式庫,例如:
    git clone https://github.com/AWSCookbook/Security
    
  3. 設定預設區域:在終端機中設定並匯出您的預設 AWS 區域:
    export AWS_REGION=us-east-1
    
  4. 取得 AWS 帳戶 ID:透過解析 aws sts get-caller-identity 命令的輸出來設定您的 AWS 帳戶 ID:
    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
    
  5. 驗證 AWS CLI 設定:執行以下命令驗證您的 AWS CLI 設定是否正確:
    aws ec2 describe-instances
    

技術與方法

本文將介紹多種使用 AWS CLI 的技術和方法,以幫助您更順暢地完成各個章節的任務。

查詢輸出、環境變數與命令替換

在某些情況下,後續命令需要依賴當前命令的輸出結果。AWS CLI 提供了客戶端過濾輸出的功能。同時,我們也會利用命令替換來設定包含這些輸出結果的環境變數。

重點解析

  • 多樣化的佈署方式:AWS 提供了多種實作相同目標的方法,本文將指導您根據具體需求選擇最佳實踐。
  • 安全性與成本控制:本文強調安全性操作,如使用 Amazon Comprehend 刪除個人識別資訊(PII),並提醒您注意成本控制,使用 AWS Budgets 來監控和管理支出。
  • 實用程式碼片段:除了詳細的配方外,本文還提供了簡短的程式碼片段,幫助您快速完成日常任務。

使用AWS CloudShell進行操作

AWS CloudShell是一種根據瀏覽器的終端機環境,您可以在已驗證的AWS控制檯會話中快速建立一個終端機環境,以執行AWS CLI命令。預設情況下,它使用瀏覽器會話的身份與AWS API進行互動。許多配方都可以使用CloudShell執行。您可以使用CloudShell執行配方步驟、清理命令和其他AWS CLI命令,而無需在本地終端機環境中建立會話。

使用CloudShell的好處

  1. 便捷性:無需在本地設定AWS CLI環境,即可直接在AWS管理控制檯中使用CloudShell。
  2. 身份驗證:自動使用當前登入AWS管理控制檯的使用者身份,無需額外進行身份驗證。
  3. 直接操作:可以直接在CloudShell中執行AWS CLI命令,對AWS資源進行管理和操作。

命令列介面(CLI)的高階用法

輸出查詢與環境變數設定

在執行AWS CLI命令時,經常需要根據命令的輸出結果來進行後續的操作。本文將介紹如何使用--query引數對命令輸出進行過濾,以及如何將輸出結果設定為環境變數,以便於後續命令使用。

# 範例:取得當前使用者的AWS帳戶ID並設定為環境變數
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
echo "當前AWS帳戶ID為:$AWS_ACCOUNT_ID"

命令替換的使用

命令替換是一種強大的功能,允許您將一個命令的輸出結果作為另一個命令的輸入。本文將展示如何在AWS CLI命令中使用命令替換,以實作更複雜的操作邏輯。

# 範例:建立一個S3儲存桶,並將其名稱設定為環境變數
BUCKET_NAME=$(aws s3 mb s3://my-bucket-$(date +%s) --query 'Location' --output text)
echo "新建立的S3儲存桶名稱為:$BUCKET_NAME"

最佳實踐與注意事項

  1. 成本控制:在使用AWS服務時,應當注意成本控制。可以使用AWS Budgets來設定預算警示,避免意外的成本超支。
  2. 安全性:在操作AWS資源時,應當遵循最小許可權原則,確保使用的IAM使用者或角色僅擁有必要的許可權,以減少安全風險。
  3. 資源清理:完成實驗或測試後,應當及時清理建立的AWS資源,以避免不必要的成本支出。

結語

本文不僅提供了豐富的AWS操作例項和程式碼範例,還詳細介紹瞭如何使用AWS CLI和CloudShell進行高效的操作和管理。透過學習本文,您將能夠更好地掌握AWS的各種服務和技術,提升您的雲端運算技能。