# 單元 1:Amazon Web Services 簡介 ## 什麼是 用戶端-伺服器模型 ![image](https://hackmd.io/_uploads/H1nIb3X1yl.png =40%x) * 用戶端 * Web 瀏覽器或桌面應用程式 * 使用者可透過這些管道向電腦伺服器提出請求。 * 伺服器 * 例如 Amazon Elastic Compute Cloud (Amazon EC2) ## 什麼是 雲端運算 ![image](https://hackmd.io/_uploads/Hyrglqwb1l.png) 雲端運算是透過網際網路提供的 **IT 資源** **隨需交付(on-demand delivery)**,採**實支實付**的定價形式。 * IT 資源 * 因應各行各業所需,提供所需的產品 * MySQL 資料庫引擎不重要,資料才重要 * 隨需交付 * AWS 可在您有需求時,便立即提供您所需的資源。 * 不再需要這些服務時,也能同樣迅速地交還這些服務,並隨即停止付費 * 實支實付 * 用多少付多少 * 開發人員週末不會上班,為何還要在週末支付開發環境? ### <font color=blue>雲端運算的部署</font> #### 1. Cloud 雲端 (公有雲端部署) * 在雲端中**設計、建立、執行**應用程式 * 或是將現有的應用程式遷移至雲端 #### 2. On-premises (private cloud, 私有雲端部署、本地部署) * 把資料存在自有的數據中心 * 透過**虛擬化技術**和**資源管理工具**來 * 部署資源 * 提高資源使用率 #### 3. Hybrid 混合部署 * 在雲端和現有的內部部署基礎架構之間,將組織的基礎架構擴展至雲端並加以擴大,同時將雲端資源連接到內部系統。 * 整合雲端資源與傳統 IT 應用程式 ### <font color=blue>雲端運算模型</font> ![image](https://hackmd.io/_uploads/Hkm_kqDZke.png) #### 基礎架構即服務 (IaaS) ==IaaS 允許用戶租用計算資源,**stop thinking of your infrastructure as hardware**。== * 提供最大程度的 IT 資源控制。 * 包括:虛擬機、儲存空間、網路...,而不需要購買和維護實體硬體設備。 #### 平台即服務 (PaaS) ==PaaS 提供一個完整的開發和部署環境。== 允許開發者專注於應用程式的創建和管理,而無需處理底層的基礎設施(如伺服器、儲存空間和網路)的管理。 #### 軟體即服務 (SaaS) ==SaaS 通過網路提供應用程式服務。== * 用戶可以直接從網路瀏覽器訪問這些應用程式,而無需在本地設備上安裝或維護軟體。 * 最少的 IT 資源控制 ### <font color=blue>雲端運算的優勢</font> * **預付成本 -> 變動成本,Trade capital expense for variable expense** * 預付成本是指資料中心、實體伺服器及其他您在使用前就需要預先投資的資源。 * 變動成本表示您僅須為所使用的運算資源付費,而非大量投資於資料中心和伺服器後,才知道您將如何加以使用。 * **不用猜測容量** * 不必為了未使用的資源而增加開銷 * 不必預先評估需要多少基礎設施容量 * 根據需求縮減規模或向外擴展 * **受益於大範圍規模經濟** * 因為數以萬計的客戶用量會在雲端中彙總,所以 AWS 等供應商可達到更大的規模經濟。 * 而這樣的規模則可轉化為較低廉的實支實付價格。 * **提升速度與敏捷性** * 傳統資料中心 -> 慢 * 雲端運算 -> 數分鐘內就可存取新資源 * **快速進入全球市場** * AWS 到處都有資料中心 * 低延遲存取 * 快速部署 APP #### Web services web service 是任何一種通過 internet 提供自身功能的軟體, 使用標準化格式(如 XML 或 JSON)來進行 API 互動的請求和回應。 ### <font color=blue>3 ways to interact with AWS</font> ![image](https://hackmd.io/_uploads/B1MIZcw-ke.png =60%x) ### <font color=blue>AWS CAF (AWS Cloud Adoption Framework, AWS 雲端採用框架)</font> * AWS CAF 的主要目的是幫助組織更順利地過渡到雲端環境。 * 它提供了一套最佳實踐和指導原則,涵蓋了技術和非技術方面的考慮因素。 #### 六個觀點(perspectives) 1. 業務(Business)觀點:關注業務策略、財務管理和治理。 2. 人員(People)觀點:專注於組織結構、領導力和文化變革。 3. 治理(Goverance)觀點:處理風險管理、合規性和安全性問題。 4. 平台(Platform)觀點:關注雲端架構設計和實施。 5. 安全觀點:專注於數據保護和基礎設施安全。 6. 運營觀點:處理日常運營、監控和優化。 # 補充:Cloud Economics and Billing ## Section 1: Fundamentals of pricing 1. Compute * 按小時/秒收費 * 因 instance 類型而異 2. Storage * 通常按 GB 收費 3. Data transfer * **Outbound** is aggregated(聚合) and charged * 當數據從 AWS 雲端服務傳輸到外部時,這些數據會被累計起來,然後根據使用的總量來計算最終的費用 * **Inbound** has no charge (with some exceptions) * 當數據從外部傳輸到 AWS 的服務時,通常不會收取任何費用。 * 通常按 GB 收費 ### How do you pay for AWS ? ![image](https://hackmd.io/_uploads/HkiY4qPWyl.png =70%x) #### 1. Pay for what you use 按實際使用量付費 ![image](https://hackmd.io/_uploads/rJJiVqPW1x.png =70%x) > 只需為您使用的服務付費,無需大量前期費用 #### 2. Pay less by using more 用越多省越多 Realize **volume-based discounts**: 1. **Saving**:隨著使用量的增加而節省 2. **Tiered pricing** for services:使用次數越多,每 GB 支付的費用就越少 * ex: Amazon S3, Amazon EBS, Amazon EFS 3. 多種存儲服務可根據需要提供更低的存儲成本 #### 3. Pay even less as AWS Grows AWS 專注於降低經營成本,這種做法使 AWS 將規模經濟中的節省轉嫁給您。 自 2006 年以來,AWS 已將定價降低了 75 次(截至 2019 年 9 月)。 未來性能更高的資源將替換當前資源,無需額外付費。 #### Custom pricing 自訂定價 **適用於具有獨特需求的大型專案(high-colume projects)** :::spoiler Reserved Instances ![image](https://hackmd.io/_uploads/HJACBcwWyg.png) ![image](https://hackmd.io/_uploads/rJ1XL9Pbkl.png) ![image](https://hackmd.io/_uploads/SyoE8qDW1x.png) ::: ## Section 2: Total cost of Ownership 總擁有成本 ### 總擁有成本(TCO) :::info Total Cost of Ownership (TCO) is the financial estimate to help identify direct and indirect costs of a system. ::: #### 計算 TCO 的好處 1. 比較在**本地部署**(on-premises)跟在 **AWS 部署**哪個比較便宜 2. 為將環境遷移到 AWS 而**制定預算**並**構建業務案例**(business case) #### TCO 包含 ![image](https://hackmd.io/_uploads/rJuyd5w-ke.png) ### AWS Pricing Calculator(AWS 定價計算機) 使用 AWS 定價計算機可以: 1. 估算每月會花費用 1. 確定每個月能不能花更少錢 1. 在實際實施之前進行建模 2. 探索估價背後的價格點和計算:**幫助你了解你錢花到哪去** 3. 查找滿足您需求的可用實例類型和合同條款 6. Name your estimatecreate:方便管理和識別不同的估算 7. Creat name groups of services: * 將相關的 AWS 服務進行分組並給予名稱 * 幫助使用者更清楚地了解他們所使用的服務 #### Reading an estimate 讀取估計值 分成三種: ``` 1. first 12 months total 前 12 個月總計 2. total upfront 預付總額 3. total monthly 每月總計 ``` #### 其它 雲總擁有成本:運行解決方案將花費的金額 投資回報率分析 (ROI):確定產生的價值,同時考慮節省的**Soft benefits**和**Hard benefits** | Soft benefits | Hard benefits | | -------- | -------- | | 重複使用服務和應用程式,使您能夠使用相同的雲端服務來定義(和重新定義解決方案) | 減少計算、存儲、網路和安全方面的支出 | |提高開發人員的工作效率|減少硬體和軟體採購 (capex)| |提高客戶滿意度 |降低運營成本、備份和災難恢復| |敏捷的業務流程,可以快速回應新的和新興的機會|減少操作人員| |擴大全球影響力 || ## Section 3: Billing 計費 :::info **AWS Organizations**:用於整合多個 AWS 帳戶的帳戶管理服務 ::: ![image](https://hackmd.io/_uploads/rJ5cq5vbyl.png) > 一個 branch 只能有一個 Parent #### 設定 ![image](https://hackmd.io/_uploads/By9Cs9wWJx.png) #### 特點和優勢 1. Policy-base account management 基於**策略**的帳戶管理 1. Group based account management 基於**組別**的帳戶管理 1. APIs that automate account management 能夠自動化管理帳戶的 API 1. Consolidate billing 整合帳單 #### 安全性 使用 **AWS Identity and Access Management (IAM)** 控制訪問 通過 **IAM policies**,您可以允許或拒絕 users, groups, roles 訪問 AWS 服務 **Service control policies (SCPs)** enable you to allow or deny access to AWS services for individuals or group accounts in an organizational unit (OU) #### 訪問 AWS Organizations 的方式 1. AWS Management Console 1. AWS CLI 1. SDK 1. HTTPS Query API ## Section 4: AWS Billing and Cost Management AWS 帳單和成本管理 AWS Billing Dashboard (AWS 帳單控制面板): ![image](https://hackmd.io/_uploads/HkgthcvZye.png) > Spend summary: 上個月花了多少錢 > Month-to-Date spend by service: 最常用的服務 #### Tools 工具 1. ==成本探索器 (Cost Explorer)== * 用途:分析成本和使用情況 * 功能:提供互動式圖表,可視化成本趨勢,按服務、帳戶或自定義標籤進行細分 2. ==預算 (Budgets)== * 用途:設置成本、使用量和預留實例(RI)利用率的預算 * 功能:當成本或使用量接近或超過預算時發送警報 3. ==成本和使用報告 (Cost and Usage Reports)== * 用途:詳細了解 AWS 成本和使用情況 * 功能:生成包含每小時或每天使用詳情的全面報告 4. AWS 成本異常檢測 (AWS Cost Anomaly Detection) * 用途:識別異常支出和根本原因 * 功能:使用機器學習來檢測異常模式並提供詳細報告 5. 預留實例 (RI) 報告 * 用途:管理和優化預留實例 * 功能:提供 RI 使用情況、覆蓋率和建議 6. Savings Plans * 用途:通過承諾一致的使用量來降低 AWS 使用成本 * 功能:提供靈活的定價模型,可應用於多種 AWS 服務 7. AWS 免費套餐儀表板 (AWS Free Tier Dashboard) * 用途:追踪免費套餐的使用情況 * 功能:顯示各服務的免費使用限額和當前使用量 8. 帳單偏好設定 (Billing Preferences) * 用途:自定義帳單設置 * 功能:==設置警報==、選擇接收帳單的方式等 9. 成本分配標籤 (Cost Allocation Tags) * 用途:組織和追踪 AWS 成本 * 功能:使用自定義標籤來分類和報告成本 10. AWS 購買訂單管理 (AWS Purchase Order Management) * 用途:管理與 AWS 帳單相關的購買訂單 * 功能:創建、編輯和跟踪購買訂單 11. AWS Marketplace 訂閱 * 用途:管理從 AWS Marketplace 購買的軟件和服務 * 功能:查看和管理訂閱、成本和使用情況 ## Section 5: AWS Support 1. 服務性質: AWS Support 是一個綜合性的支援計劃,包含多種服務和工具的組合,旨在幫助客戶更好地使用 AWS 的各種服務。 2. 組成部分: * 人力支援:包括技術支援工程師和(在某些計劃中)技術客戶經理(TAM) * 工具:如 AWS Trusted Advisor * 這是 AWS Support 提供的一個具體工具,它自動為客戶提供實時指導,以幫助他們遵循 AWS 最佳實踐。 * 資源:如最佳實踐指南、白皮書等 * 服務:如帳戶協助、AWS Support Concierge 等 3. 主要功能: * 技術支援:解答問題,幫助排除故障 * 最佳實踐建議:優化 AWS 使用 * 架構指導:幫助設計和實施 AWS 解決方案 帳戶管理協助:處理帳單和帳戶相關問題 4. 不同級別的支援計劃: * ![image](https://hackmd.io/_uploads/HyprRqPWkl.png) * Basic Support:所有 AWS 客戶的免費計劃 * Developer Support:適合試驗或早期開發階段 * Business Support:適合生產工作負載 * Enterprise Support:適合業務關鍵型工作負載 # 單元 2:雲端中的運算 多租用戶:與多個其他執行個體一起共用主機,由 Hypervisor 負責分隔 VM Amazon Elastic Compute Cloud (EC2) * 自由選擇作業系統、設定 APP、控制網路連結(接收哪些請求) * 垂直擴展:在伺服器無法負荷時,提供更多記憶體和 CPU ## Amazon EC2 執行個體類型 * **一般用途執行個體** * 適用:應用程式伺服器、遊戲伺服器、企業應用程式專用候端伺服器、小型及中型資料庫 * 特性:平衡運算、記憶體與連網資源,適合運算、記憶體和網路需求大致相同的應用程式。 * **運算最佳化執行個體** * 適用:高效能 Web 伺服器、運算密集的應用程式伺服器、專用遊戲伺服器、批次處理工作負載 * 特性:適合需要高效能處理器的運算密集型應用程式。 * **記憶體最佳化執行個體** * 適用:高效能資料庫、大量非結構化資料即時處理 * 特性:為記憶體內處理大型資料集的工作負載提供快速效能,適合需要預先載入大量資料的應用。 * **加速運算執行個體** * 適用:圖形應用程式、遊戲串流、應用程式串流 * 特性:使用硬體加速器或協同處理器來提高效率,適合浮點數量計算、圖形處理和資料模式比對。 * **儲存最佳化執行個體** * 適用:分散式檔案系統、資料倉儲應用程式、高頻率線上交易處理 (OLTP) 系統 * 特性:專為需要高序列讀取及寫入存取的超大型資料集設計,提供高 IOPS 的低延遲隨機 I/O 操作。 ## Amazon EC2 定價 * **隨需執行個體** * 適用情境:不可中斷的短期、不定期工作負載,例如開發和測試應用程式。 * 特性: * 無需預付成本或最低合約 * 按使用的運算時間付費 * 不適合長期持續使用一年或以上的工作負載 * **預留執行個體** * 標準預留執行個體: * 適用情境:對應用程式所需的 EC2 執行個體類型和大小有明確需求,並計劃在哪個 AWS 區域執行。 * 特性:可選擇 1 年或 3 年期,3 年期節省更多成本。 * 可轉換預留執行個體: * 適用情境:需要在不同可用區域或不同執行個體類型中執行。 * 特性:提供更高折扣交易的靈活性。 * **Savings Plans** * 適用情境:需要在 Amazon EC2 用量上擁有靈活性。 * 特性: * 對執行個體系列和區域做出 1 年期或 3 年期的每小時支出承諾,最多可節省 72%。 * 無需指定執行個體類型和大小 * 沒有容量預留選項。 * **Spot 執行個體** * 適用情境:啟動和結束時間較彈性或可以承受中斷的工作負載。 * 特性: * 利用未使用的 Amazon EC2 運算容量,節省最多達 90% 的成本。 * 可能因容量不再可用而中斷。 * **專用主機** * 特性:完全專供您使用的實體伺服器,價格最高,適合需要維持授權合規的情境。 ## Amazon EC2 Auto Scaling ![image](https://hackmd.io/_uploads/H1hRI6my1g.png =30%x) ![image](https://hackmd.io/_uploads/SJEJP6Xykx.png =30%x) > 根據不斷變化的應用程式需求,自動新增或移除 Amazon EC2 執行個體 > 可設定最小與最大容量 * **動態擴展(Dynamic Scaling)** * 即時反應:動態擴展根據系統當前的需求自動調整資源。當負載增加時,系統會自動增加資源;當負載減少時,系統會減少資源。 * 依賴監控:這種擴展通常依賴於實時監控系統的性能指標,如CPU使用率、內存使用率、網絡流量等。 * 優點:能夠快速響應突發流量,確保系統穩定運行,且不浪費資源。 * 缺點:可能會在負載突然增加時出現短暫的資源不足情況,因為擴展是基於當前需求。 * **預測性擴展(Predictive Scaling)** * 基於預測:預測性擴展使用歷史數據和分析來預測未來的負載需求,提前調整資源。 * 計劃性調整:這種方法通常會根據預測的流量高峰提前增加資源,並在預測的低谷期減少資源。 * 優點:能夠在預測的負載高峰來臨前準備好資源,避免因資源不足而導致的性能問題。 * 缺點:如果預測不準確,可能會導致資源浪費或資源不足。 ## Elastic Load Balancing (ELB) ![image](https://hackmd.io/_uploads/BJZaF6Xkyl.png =30%x) ![image](https://hackmd.io/_uploads/rJVg96Qyke.png =48%x) * ELB 的運作方式: * ELB 是區域性的,能夠在區域層級運行,提供高度可用的服務。 * 隨著流量增長,ELB 能夠自動處理額外的流量,並在 EC2 機群擴展或縮減時調整流量分配。 * 應用場景: * ELB 不僅用於外部流量,還能解決內部後端的流量分配問題。 * 在多層架構中,ELB 可以作為前端和後端之間的中介,簡化連接和通信。 * ELB 提供了一個單一的 URL,簡化了前端對後端資源的訪問。 ## 訊息與佇列 1. **問題背景:** * 在咖啡店的比喻中,收銀員和咖啡師需要同步工作,否則會影響效率。 * 如果收銀員和咖啡師無法同步(例如,咖啡師忙碌或不在),整個流程就會卡住。 2. **解決方案:訊息與佇列:** * 引入緩衝區或佇列,讓訊息可以在不同元件之間傳遞,而不需要同步。 * 讓收銀員將單子張貼到某個緩衝區,例如出餐看板。 * 這種方式避免了緊密耦合的問題,提升系統的可靠性。 3. **緊密耦合 vs 鬆散耦合:** * 緊密耦合:元件之間直接通訊,單一元件故障可能影響整個系統。 * 收銀員與咖啡師直接溝通 * 鬆散耦合:利用佇列進行訊息傳遞,單一元件故障不會影響其他元件。 * B故障,A傳送出去的訊息仍然會送到佇列並且保留在該位置,直到最終處理完畢為止。 * 收銀員與咖啡師之間有出餐看板。 #### Amazon SQS(Simple Queue Service) 提供訊息的傳送、存放和接收功能,確保訊息不會遺失。 * 訊息 = 咖啡點餐單 * SQS = 出餐看板 #### Amazon SNS(Simple Notification Service) * SNS 可以用簡訊或電子郵件來廣發通知給終端使用者。 * 當餐點準備好時,可以使用 SNS 發送通知給客人。 * SNS 使用發布/訂閱模型(pub/sub),允許訊息傳送到多個訂閱者。 * 在實際運作中,您可將某個訊息傳送到主題中,而該主題會一次將訊息散發給所有訂閱者。 * 訂閱者也可以是端點,如: * SQS 佇列 * Web 伺服器 * 電子郵件地址 * ... ### <font color=blue>單體式應用程式與微型服務</font> ![image](https://hackmd.io/_uploads/rJ79JA7yJe.png =39%x) ![image](https://hackmd.io/_uploads/ry6qJ071kl.png =38%x) 單體式應用程式架構(緊耦合): * 應用程式由多個元件組成,如資料庫、伺服器、使用者介面、商業邏輯等。 * 如果單一元件故障,會導致其他元件及整個應用程式故障。 微型服務架構(鬆耦合): * 即使單一元件失敗,其他元件仍能繼續運作,因為它們能夠獨立通訊。 * 兩種 AWS 服務可促進應用程式的整合: * Amazon SQS(Simple Queue Service):用於建立訊息佇列,確保訊息在不同元件間可靠傳遞。 * Amazon SNS(Simple Notification Service):用於實現發布/訂閱模型,讓訊息可以廣播給多個訂閱者。 ## 其他運算服務 ![image](https://hackmd.io/_uploads/B1uq7A7Jkg.png =55%x) * EC2 執行個體: * 是在 AWS 上可輕鬆佈建的虛擬機器。 * 適用於各種使用案例,如基本 Web 伺服器、高效能運算叢集等。 * 使用者需自行管理,包括修補、擴展和高可用性設計。 * 無伺服器運算: * 不需管理基礎設施,專注於應用程式開發。 #### AWS Lambda ![image](https://hackmd.io/_uploads/r1hCQRmkyl.png =70%x) * AWS Lambda 是其中一種無伺服器選項,適合執行短期(最多15分鐘)的程式碼。 * 支援自動擴展並具高可用性,適合快速處理的任務。 * 不適合深度學習 * 適合 Web 後端、處理請求 #### AWS Fargate * 一種無伺服器運算平台,適用於 ECS 或 EKS。 * 不需自行管理 EC2 執行個體,適合不需存取基礎作業系統的情境。 #### 容器服務 * 容器可以在 EC2 上執行,但需選擇協調工具(ECS 或 EKS) * **Amazon ECS**(Elastic Container Service) * **Amazon EKS**(Elastic Kubernetes Service) #### 選擇建議 * 若需完整存取作業系統,使用 EC2。 * 若需短期執行的函數或事件導向應用程式,考慮 AWS Lambda。 * 若執行 Docker 容器: 1. 選擇協調工具(ECS 或 EKS), 2. 決定使用 EC2 (自行管理) 或 Fargate (無伺服器代管環境)。 # 單元 3:全球基礎設施與可靠性 ## AWS 全球基礎設施 ### <font color=blue>區域(Region)與可用區域(AZ)</font> ![image](https://hackmd.io/_uploads/rkZxYjPWye.png =70%x) >* 北加州、奧勒岡州和 GovCloud (美國西部) 各為不同區域。 >* 北加州地區稱為 us-west-1,此區域包含三個可用區域 (1a、1b 和 1c)。 >* 每個可用區域中有三個資料中心。 * 區域 (Region) * AWS Region 是一個地理區域,負責跨區域的數據複製 * 許多 AWS 服務在區域(Region)層級運作 * 如 ELB(Elastic Load Balancing),它們在多個 AZ 同步運行,達到高可用性。 * AWS 區域由多個可用區域(AZ)組成 * 可用區域 (Availability Zones) * 每個 AZ 都是獨立的(fully isolated partition) * 具有各自的備援電源、網路連結和連線能力 * 包含一個或多個資料中心(通常是三個) * 為了避免單點故障,建議在多個 AZ 部署應用程式 & 複製資料 * 通過專用光纖(Dedicated fiber)與其他 AZ 連線 * 可用區域彼此距離幾十英里 * 距離夠近,足以在可用區域之間維持低延遲 * 距離夠遠,足以減少可用區域之間受到影響的機率 ### <font color=blue>選取區域</font> ![image](https://hackmd.io/_uploads/BkbRIjwZkl.png =70%x) * legal requirements 合規 * 首先考量合規需求。 * EX: 若法律規定資料必須存放在特定地區,例如英國或中國,則必須選擇相應的區域。 * Latency 延遲 * 可以使用 Cloud Ping 進行測試 * 考量您和客戶群的距離,距離越近,則資料傳輸的延遲越小 * EX: 若多數客戶在新加坡,則應考慮在新加坡區域經營。 * 功能可用性 * 某些區域可能不具備所有 AWS 功能。 * EX: 若需要特定功能,如 Amazon Braket,則需選擇已支援該功能的區域。 * 定價 * 各區域的運營成本不同,會影響定價。 * EX: 某些地區如巴西,由於較高的稅務結構,運營成本較高。因此,即使客戶在巴西,若價格是首要考量,可能選擇其他國家更具經濟效益。 ## 節點 :::spoiler Points of Presence 接入點 * AWS 提供由187個接入點(oints of Presence)組成的網路 * 176 個邊緣位置(edge locations) + 11 個區域性邊緣快取(Regional edge caches) * 區域性邊緣快取用於不常被訪問的內容 * 與 Amazon CloudFront 一起使用 * 全球內容交付網路(CDN):以更低的延遲向最終使用者交付內容 ::: <font color=red>**節點是 Amazon CloudFront 用來將資料副本存放在更靠近客戶位置的站點,以便加快交付。**</font> ![image](https://hackmd.io/_uploads/r1RjDWE1kl.png =70%x) > 1. 假設資料放在巴西,且客戶在中國 > 2. 在靠近中國的節點上對本機資料進行 copy > 3. 客戶就可以從此節點獲取資料了 (比較近所以比較快) * **內容交付網路 (CDN) ── Amazon CloudFront** * AWS 提供的 CDN 服務稱為 Amazon CloudFront * 在全球提供傳輸 "資料、影片、應用程式和 API" 的服務。 * 使用全球的節點來加速用戶端與伺服器的通訊,確保低延遲和高傳輸速度。 * **節點與區域的區別** * 節點是用來加速內容交付的,而區域則是地理上的分隔地區。 * AWS 節點還可以執行 DNS 服務,如 Amazon Route 53,幫助將客戶導向正確的網頁位置。 * **AWS Outposts** * 對於需要在自己大樓內運行 AWS 服務的企業,AWS Outposts 讓企業在自己的資料中心內安裝一個完整運作的迷你區域。 * 這項服務適合有特殊需求的企業,提供與 AWS 雲端相同的功能和管理。 * **總結** * 區域是地理分隔的地區,提供企業所需的服務。 * 區域中的可用區域(AZ)提供高可用性和災難復原的能力。 * AWS 節點透過 CloudFront 提供全球內容交付,確保客戶不受地理位置限制。 ## 如何佈建 AWS 資源 使用 AWS 服務時要透過 API Call 來建立、設定和管理 AWS 資源 * **AWS 管理主控台** * 這是瀏覽器中的視覺化工具,適合新手和非技術人員用來了解和管理 AWS 資源。 * 方便用於建立測試環境、檢視 AWS 帳單和監控資源。 * 然而,對於生產環境,不建議依賴主控台的手動操作,因為容易出現人為錯誤。 * **AWS 命令列界面 (CLI)** * CLI 提供了一種透過終端機進行 API 呼叫的方式。 * 允許編寫可重複使用的命令,減少人為錯誤。 * 支援自動化,能夠排程或由其他程序觸發命令執行。 * **AWS 軟體開發套件 (SDK)** * SDK 支援多種程式設計語言,讓開發人員能更方便地與 AWS 資源互動。 * 提供更高層次的抽象,避免直接使用 API 的複雜性。 * 適合需要自動化和程式化管理 AWS 資源的開發者。 ### <font color=blue>進階管理工具 ── 建立自動化與可重複部署的服務</font> * **AWS Elastic Beanstalk** * Elastic Beanstalk 是一個平台即服務 (PaaS) 工具,讓您可以輕鬆地佈建和管理應用程式環境。 * 您只需提供應用程式的程式碼和必要的配置,Elastic Beanstalk 就會自動處理網路、EC2 執行個體、擴展和負載平衡器的設定。 * 這使得開發者可以專注於應用程式開發,而不需要花費過多時間在基礎設施的管理上。 * **AWS CloudFormation** * CloudFormation 是一種基礎設施即程式碼 (IaC) 工具,使用 JSON 或 YAML 格式的範本來定義 AWS 資源。 * 透過宣告式的方法,您可以指定需要的資源,CloudFormation 會自動處理所有必要的 API 呼叫來佈建這些資源。 * 支援多種 AWS 服務,包括儲存、資料庫、分析和機器學習等。 * 可以在多個帳戶或區域中重複使用相同的範本,以確保環境的一致性並減少人為錯誤。 ### AWS的服務類別 :::spoiler Storage ![image](https://hackmd.io/_uploads/BJnYjovW1g.png) ::: :::spoiler Compute ![image](https://hackmd.io/_uploads/HJ3qsoDbJe.png) ::: :::spoiler Database ![image](https://hackmd.io/_uploads/Bk-2oswbJl.png) ::: :::spoiler Internet ![image](https://hackmd.io/_uploads/BJ7asjwWyl.png) ::: :::spoiler Security ![image](https://hackmd.io/_uploads/r1L0iswb1x.png) ::: :::spoiler Cost Management ![image](https://hackmd.io/_uploads/HJiknjvbkl.png) ::: :::spoiler Control ![image](https://hackmd.io/_uploads/r1Yg3oD-1e.png) ::: # 單元 4:聯網 ## Networks ![image](https://hackmd.io/_uploads/SyMYuCP-1x.png =70%x) > 網路可以由 路由器/交換機 區分為子網 #### Internet Protocol address (IP) * IPv4 (32-bit) address: 192.0.2.0 * IPv6 (128-bit) address: 2600:1f18:22ba:8c00:ba86:a05e:a5ba:00FF * 適應更多使用者 * 每列為 16 位 (0 至 FFFF) #### Open Systems Interconnection (OSI) model ![image](https://hackmd.io/_uploads/ry3dtAwbJe.png) ### <font color=blue>Classless Inter-Domain Routing (CIDR)</font> :::info CIDR 地址是以 IP 地址的形式表示,並且它代表了某個網路的起始地址。 這意味著在一個特定的網路中,CIDR 地址是用來標識該網路的第一個可用地址。 ::: 舉例: ![image](https://hackmd.io/_uploads/BkX4KRD-yx.png) ## AWS 的連線能力 ![image](https://hackmd.io/_uploads/S1e1R8Iykg.png =70%x) > 咖啡店 是VPC > 收銀區櫃檯 是閘道之一 > 收銀區、咖啡區 是不同的子網路 ![image](https://hackmd.io/_uploads/rJJ7cCDZyg.png) * Virtual Private Cloud (VPC 虛擬私有雲) * 用戶在 AWS 中專屬的私有網路。 * 與其他 VPC 邏輯隔離(Logically isolated)。 * 屬於單個 AWS Region,但是可以跨越多個 AZ。 * 在自己定義的虛擬網路中啟動資源。 * 允許定義私有 IP 範圍,用於放置 EC2 執行個體、ELB 等資源。 * 閘道可以控制哪些流量能進入 VPC。 * 如網站可以提供給大眾存取 * 而內部資源(人力資源應用程式、後端資料庫)僅供私有網路使用。 * 子網路: * 資源必須放入子網路,而非直接放入 VPC。 * 子網路可以彼此通訊,但無法直接與 internet 通訊。 * 屬於單個可用區。 * 子網路劃分 VPC 的 IP 位址,用於分組資源並控制公有或私有訪問。 * 公有子網路:需要開放存取的資源,如:線上商店的網站。 * 私有子網路:只能透過私有網路存取的資源,如:含有訂單紀錄的資料庫。 ### <font color=blue>IP addressing</font> * 當用戶創建一個 VPC 時,必須為其指定一個 IPv4 CIDR 塊。 * 這個 CIDR 塊定義了 VPC 中可用的私有 IPv4 位址範圍。 * 一旦 VPC 被創建並分配了 CIDR 塊,這個位址範圍就無法再進行修改。 * 子網的 CIDR 塊不能重疊 * 最大的 IPv4 CIDR 塊大小為 /16 * 最小的 IPv4 CIDR 塊大小為 /28 #### Reserved IP addresses ![image](https://hackmd.io/_uploads/SkREs0PZ1e.png) > 每個子網都有 5 個 Reserved IP #### Public IP address type 公網IP位址類型 | Public IPv4 address 公有 IPv4 位址 | Elastic IP address 彈性IP位址 | | -------- | -------- | | 通過彈性IP位址手動分配 | 與 AWS 帳戶關聯 | |通過子網級別的自動分配公有IP位址設置自動分配|可以隨時分配和重新映射| |X| 可能需要支付額外費用| #### Elastic network interface (ENI) 彈性網路介面 ![image](https://hackmd.io/_uploads/HJsQ6Rvbye.png) * ENI 是一種虛擬的網路介面卡(Virtual Network Interface Card) * 它在雲端環境中模擬實體網路卡的功能 * 資料傳輸、網路連線 * 每個 VPC 中的實例在創建時都會自動獲得一個默認的網路介面 * 這個默認介面會從 VPC 的 IP 位址池中獲得一個私有 IPv4 位址 * 主要特性: * 可附加性:可以連接到雲端實例(EC2 instances)上 * 可移動性:可以從一個實例分離,並重新附加到另一個實例 * 屬性保持:當移動到新實例時,其所有網路配置和設定都會保持不變 * 流量重定向:可用於重新導向網路流量,提供網路流量的靈活管理 #### Route tables and routes 路由表和路由 :::info 路由表包含一組規則(或路由),您可以配置這些規則以將網路流量定向到子網。 ::: ![image](https://hackmd.io/_uploads/Hy0u3RvWJg.png) ## VPC 的門 ── IGW, 虛擬私有閘道, AWS Direct Connect * 網際網路閘道 (Internet gateway, IGW): * ![image](https://hackmd.io/_uploads/rJ45TRv-ye.png) * 若要允許來自網際網路的公有流量存取您的 VPC,您必須將 IGW 連接到 VPC。 * 在 VPC 路由表中為 Internet 流量提供目標 * **開放給大眾的門。** :::spoiler Network Address Translation (NAT) gateway ![image](https://hackmd.io/_uploads/BJwzCAPbyx.png) 使私有子網中的實例能夠連接到公共 Internet ::: * 虛擬私有閘道 (Virtual gateway, VGW): * ![image](https://hackmd.io/_uploads/BkqqmESy1g.png) * 在 VPC 和內部企業網路之間建立 VPN 連線 * VPN 提供加密的私有連線。 * 但是 VPN 使用共用頻寬,可能受其他流量影響。 * **專用公車前往,但還是要用同一條車道。** * AWS Direct Connect: * ![image](https://hackmd.io/_uploads/S1lam4ByJe.png) * 在 VPC 和內部資料中心之間建立專用連線。 * 企業資料中心會將網路流量路由至 AWS Direct Connect 位置。 * 然後,該流量會透過虛擬私有閘道路由至 VPC。 * 企業資料中心與 VPC 之間的所有網路流量都會透過此專用私有連線流量流程。 * **直接通往咖啡廳的祕密傳送門。** * 多種閘道的併用: * 單一 VPC 可以連接多種閘道。 * 用於不同類型的資源,這些資源位於不同子網路中。 ## 子網路之間的門 ── ACL 與 安全群組 ![image](https://hackmd.io/_uploads/H1e1WPL1yl.png =90%x) * ACL:**控制子網路層級的流量** * 為子網路檢查封包權限。 * 所有封包在**進出**子網路的時候都需要經過 ACL(網路存取控制清單) 檢查。 * 無狀態:不記錄封包的歷史 * 也就是每次都得重新檢查封包。 * 舉例:海關人員,出入境都會檢查護照。 * Security groups 安全群組:**控制執行個體層級的流量。** * 為 EC2 執行個體檢查封包權限 * 預設:阻止所有進入流量,但允許所有傳出流量。 * 安全但不實用 * 可以修改安全群組讓它接受特定類型的流量,如:Web 型流量、HTTPS * 具狀態:記錄封包的進出歷史。 * 也就是會記住誰具有進出的權限。 * 舉例:夜店守門員,只檢查進入不檢查離開。 * 但再次進入時有蓋手章所以可以快速通關 ## 全球網路 <font color=red>客戶只要輸入網址,就可以訪問託管在 AWS 上的網站。 But How???</font> * Route 53 (DNS) * ![image](https://hackmd.io/_uploads/rkXVVDIJye.png =90%x) * 提供網域名稱註冊服務。 * 使用者可以直接在 AWS 上購買和管理網域名稱。 * 將網域名稱翻譯成 IP 地址。 * 支援多種路由策略,如: * Latency Based Routing * 地理位置 DNS * 根據客戶所在位置來引導流量 * 理鄰近度 * 加權輪詢算法 * Amazon CloudFront * 一種內容交付網路(CDN),加快網站資產的交付。 * 根據使用者的地理位置,將內容交付到最近的節點。 * 靜態資產(如影像和 GIF)可以部署到不同地區的 CloudFront 節點,以降低延遲。 * 例如,北美洲的使用者可以通過奧瑞岡州的 CloudFront 獲取內容。 * 而愛爾蘭的使用者則通過都柏林的 CloudFront 獲取。 :::spoiler 範例 ![image](https://hackmd.io/_uploads/H1iuNvI1ke.png) > 假設 AnyCompany 的應用程式在數個 Amazon EC2 執行個體上執行。 > 這些執行個體所在的 Auto Scaling 群組連接到 Application Load Balancer。 1. 客戶前往 AnyCompany 的網站以便請求應用程式的資料。 2. Amazon Route 53 使用 DNS 解析來識別 AnyCompany.com 的相應 IP 地址 192.0.2.0。這個資訊會再傳回給客戶。 3. 客戶的請求會透過 Amazon CloudFront 傳送到最近的節點。 4. Amazon CloudFront 會連接到 Application Load Balancer,後者會將傳入的封包傳送到 Amazon EC2 執行個體。 ::: # 單元 5:儲存和資料庫 ## 區塊層級儲存 ── Amazon EBS * 區塊層級儲存 * 定義:區塊層級儲存是將檔案存放在磁碟的區塊中 * ==修改區塊儲存區中的檔案時,只會更新已變更的部分== * 應用:資料庫、企業軟體或檔案系統等需要高效存取的應用程式。 * EC2 執行個體的儲存選項 1. 執行個體存放區 * 特性:本機儲存,連接到執行個體所在的實體主機,就像一般硬碟一樣。 * 限制:資料不具持久性,停止或終止執行個體時資料會被刪除。 * 適用情境:適合暫存檔案或可以輕鬆重建的資料。 2. Amazon Elastic Block Store (EBS) * 特性:獨立於執行個體的虛擬硬碟,資料具持久性。 * 使用方式:定義大小和類型,佈建後連接到 EC2 執行個體。 * 優勢:即使執行個體停止或重啟,資料仍然存在。 * EBS 的備份與恢復 * 快照:EBS 支援增量備份,稱為快照。 * 磁碟區的第一個備份會複製所有資料 * 後續備份中,只會儲存自最近一次快照以來變更的資料區塊 * 重要性:定期建立快照以防止資料遺失,並可從中還原資料。 * **完整備份會包含自最近一次備份之後未變更的所有資料,跟增量備份不同。** ## 物件層級儲存 ── Amazon S3 * 物件層級儲存 * 定義:將資料視為物件,存放在儲存貯體(Bucket)中 * 硬碟中的檔案 = 物件 * 檔案目錄 = 儲存貯體 * ==修改物件儲存中的檔案時,會更新整個物件== * 應用:大規模資料存儲(大量非結構化資料,如圖片、影片)、 * 物件儲存與管理 * ![image](https://hackmd.io/_uploads/HytaUEYyyg.png =50%x) * 物件最大為 5TB ,由 資料、中繼資料、金鑰 組成。 * 資料 -> 檔案 * 中繼資料包含資料內容、資料使用方式、物件大小等資訊 * 金鑰 -> 物件的唯一標識符 * 支援版本控制 -> 防止意外刪除,保留物件的歷史版本。 * 可設定許可權 -> 限制誰可以存取或查看物件。 * 生命週期政策 * 在不同儲存方案間移動資料 * 自動根據設定的時間和需求進行移動。 * 範例: 1. 物件在 S3 Standard 中保存 90 天 2. 接著移至 S3 Standard-IA 30 天 3. 最後移至 S3 Glacier Flexible Retrieval。 ### <font color=blue>Standard 類別</font> #### S3 Standard * **適合**:頻繁存取的資料。 * **特色**: * 多副本存儲,實現地理冗餘(至少將資料存放在三個可用區域)。 * 提供 99.99% 的可用性和 99.999999999%(11 個 9)的耐用性。 * **價格**:相對較高,因為提供高可用性和耐用性。 * **舉例**: * 靜態網站託管。 * 資料分析和即時處理應用。 #### S3 Standard-Infrequent Access (S3 Standard-IA) * **適合**:不常使用但需要快速存取的資料。 * **特色**: * 適合不常存取但在必要時需要快速存取的資料。 * 提供與 S3 Standard 類似的高耐用性,但存取成本較低。 * **價格**:存儲成本較低,但存取成本較高。 * **舉例**:備份與災難復原資料。 ### <font color=blue>Glacier 類別</font> #### S3 Glacier Instant Retrieval * **適合**:需要偶爾快速存取的冷資料 * **特色**:在幾毫秒內擷取物件 * **價格**:儲存成本低,且提供更快的檢索時間 * **舉例**:醫療影像和其他需要快速存取的大型檔案 #### S3 Glacier Flexible Retrieval * **適合**:需要長期保存但不需要快速存取的資料 * **特色**:在幾分鐘到幾小時內擷取物件 * **價格**:存儲成本非常低,但檢索成本和時間可能較高。 * **舉例**:法規要求的合規性存檔 #### S3 Glacier Deep Archive * **適合**:極少存取的資料 * **特色**:在 12 小時內擷取物件 * **價格**:最低的存儲成本,但檢索成本和時間最高 * **舉例**:歷史記錄和長期合規性存檔 ### <font color=blue>其他類別</font> #### S3 One Zone-Infrequent Access (S3 One Zone-IA) * **適合**:預算不高但仍需要冗餘的資料。 * **特色**:將資料存放在單一可用區域中,價格較低。 * **價格**:比 S3 Standard-IA 更低。 * **舉例**:非關鍵業務備份。 #### S3 Intelligent-Tiering * **適合**:存取模式未知或持續變更的資料 * **特色**:自動將資料在不同存儲層級間移動,根據存取模式調整。 * **價格**:每月監控和自動化的費用,但能通過自動調整降低總成本。 * **舉例**:動態應用程式的資料存儲,使用模式不確定。 #### Amazon S3 Outposts * **適合**: * 本地化資料存取需求的資料。 * 需要低延遲和高效能的應用程式資料。 * **特色**: * 提供在內部部署 AWS Outposts 環境中擷取、儲存和存取資料的能力。 * 設計用於將資料以持久及備援方式儲存在 Outposts 上的多個裝置和伺服器上。 * 支援本機資料駐留需求,確保資料能夠存放在內部部署應用程式附近。 * **價格**: * 價格會依據 Outposts 的配置和使用情況而有所不同。 * 需要考慮 Outposts 硬體和維護成本。 * **舉例**: * 需要符合資料駐留法規的行業,如金融和醫療。 * 需要低延遲數據處理的工業自動化或實時分析應用。 ## 儲存檔案系統 ── Amazon EFS * 適合場景: * 需要多個伺服器共用檔案系統的應用。 * 動態擴展和縮減儲存需求。 * 特點: * 受管的檔案系統,支持多個 EC2 執行個體同時存取。 * 自動擴展和縮減,無需手動干預。 * 提供 Linux 檔案系統功能。 * 區域性資源,區域內的任何 EC2 執行個體都可以存取。 * 優勢: * 簡化管理,不需擔心硬體購置和維護。 * 自動管理擴展和複寫。 * 適合需要高可用性和彈性的檔案存取需求。 ## 資料庫管理系統 * 關聯式資料庫管理系統(RDBMS) * 目的:用於管理和維護不同資料之間的關係。 * 例如,追蹤客戶購買行為以提供促銷折扣。 * 資料存放:資料以表格形式存放,並==透過共同屬性連結不同的資料表==。 * 查詢語言:使用 SQL(結構化查詢語言)來查詢和管理資料。 * 非關聯式資料庫(NoSQL) * 結構靈活:不需要固定的結構描述,資料表中的項目可以有不同的屬性。 * 鍵值對結構:資料以鍵值對形式存放,易於新增或移除屬性。 * 簡單查詢:查詢基於指定為金鑰的屬性,適合單一資料表的項目集合。 ### <font color=blue>關聯式 DB</font> * Amazon EC2 * ==隨即轉移==:將現有資料庫遷移到 EC2 上運行。 * 標準實務 * 資料庫搬遷服務 * 可控制作業系統、記憶體、CPU、儲存容量等,相同於內部部署環境。 * Amazon RDS(Relational Database Service):AWS "服務" * 支援主要資料庫引擎 * Amazon Aurora * PostgreSQL * MySQL * MariaDB * Oracle Database * Microsoft SQL Server * 提供自動修補、備份、備援、容錯移轉、災難復原等功能。 * 優點:減少資料庫管理工作量,讓用戶專注於業務問題。 * 安全選項: * 靜態加密 (在儲存資料時保護資料) * 傳輸過程中的加密 (在傳送和接收資料時保護資料) * Amazon Aurora:關聯式資料庫 "引擎" * 受管程度最高:相容於 MySQL 和 PostgreSQL 兩種形式。 * 經濟實惠:價格為商業級資料庫的十分之一。 * 資料複製:資料被複製到多個設施,提供高可用性 -> 六份副本。 * 讀取複本:可部署高達 15 個僅供讀取的複本以提升效能。 * 持續備份:自動備份到 S3,支持時間點恢復。 ### <font color=blue>非關聯式 DB</font> #### Amazon DynamoDB * 無伺服器資料庫:不需要管理基礎設施,AWS 自動處理儲存和擴展。 * 資料表:存放和查詢資料的地方,資料分為項目,項目具有屬性。 * 備援儲存:資料在多個可用區域和硬碟上鏡像,提供高可用性。 * 高效能:回應時間數毫秒,適合高頻率存取的應用。 * 高可擴展性:支持大量使用者及高請求量 * 例如 2019 年 Prime Day 的 7.11 兆次 API 呼叫。 * 使用案例與限制 * 適合場景:高頻率存取、結構靈活的資料集。 * 不適合場景:需要複雜 SQL 查詢或剛性結構的資料集。 ## 資料倉儲 歷史資料分析的挑戰: * **資料量龐大**:隨著現代遙測和物聯網的發展,資料量不斷增加,超出傳統關聯式資料庫的處理能力。 * **資料種類多樣**:商業智慧專案通常需要整合來自不同資料存放區的資料,這對傳統資料庫來說是個挑戰。 * **資料穩定性**:歷史資料分析關注的是過去的資料,這些資料不會再改變,與即時資料需求不同。 * 例如:「告訴我前一個小時所有商店的銷售數字」 * 相較於:「現在庫存裡還有多少袋咖啡?」 -> 資料倉儲專門處理這類大數據 ### <font color=blue>Amazon Redshift</font> * 資料倉儲即服務:Redshift 提供一個可大規模擴展的資料倉儲解決方案。 * 高效能:Redshift 提供比傳統資料庫高 10 倍的效能。 * 單一 SQL 查詢:與 Redshift Spectrum 結合,能夠對資料湖中 EB 級的非結構化資料執行單一 SQL 查詢。 * 適合大數據 BI 解決方案:當需要進行大規模歷史資料分析時,Redshift 是理想的選擇。 * 簡單啟動:只需單一 API 呼叫即可開始使用,縮短了等待結果的時間。 ## 遷移資料庫 ### <font color=blue>Amazon Database Migration Service (DMS)</font> * 資料庫遷移: * 將資料從來源資料庫遷移到目標資料庫 * 遷移過程中,來源資料庫可以保持運作,將停機時間降到最低。 * 同質遷移:適用於相同類型的資料庫 * 這種遷移相對簡單,因為結構描述和資料類型相容。 * 例如: MySQL 到 Amazon RDS for MySQL。 * 異質遷移:適用於不同類型的資料庫 * 需要先使用 AWS Schema Conversion Tool 轉換結構描述和程式碼。 * 例如: Oracle 到 Amazon Aurora。 * 應用場景 * 開發和測試:將生產資料庫的副本遷移到開發或測試環境,方便測試而不影響生產環境。 * 資料庫合併:將多個資料庫合併成一個中央資料庫。 * 持續複寫:用於災難復原或地理區隔的持續資料庫複寫。 ## 其他資料庫服務 * AWS 資料庫選項 * Amazon DynamoDB:適合鍵值組資料庫,適用於需要高效能和可擴展性的應用。 * Amazon DocumentDB:支援 MongoDB 工作負載的文件資料庫服務,適合內容管理、目錄、使用者描述檔案等應用。 * Amazon Neptune:圖形資料庫,專為社群網路、推薦引擎和詐騙偵測設計,能有效管理複雜的關聯數據。 * Amazon QLDB (Quantum Ledger Database):不可變的總帳資料庫,適用於需要完整稽核記錄的應用,如金融和供應鏈管理。 * Amazon Managed Blockchain:讓您使用開放原始碼架構建立和管理區塊鏈網路,適合需要去中心化交易和資料共用的應用。 * AWS 資料庫加速器選項 * Amazon ElastiCache:為資料庫新增快取層,支援 Redis 和 Memcached,能顯著改善常見請求的讀取時間。 * DynamoDB Accelerator (DAX):專為 DynamoDB 設計的記憶體內快取,能將回應時間從毫秒縮短到微秒。 ## 比較 ### <font color=blue>Amazon EBS v.s. Amazon S3</font> * Amazon Elastic Block Storage (EBS) * 適合場景: * 需要執行大量微型編輯的應用。 * 複雜的讀取、寫入或變更功能。 * 特點: * 單個容量高達 16 TiB。 * 在 Amazon EC2 執行個體終止後仍能運作。 * 支援固態硬碟和旋轉磁盤儲存方案。 * 將檔案分解成區塊,僅更新變更的區塊。 * 優勢: * 適合需要頻繁更新的資料處理。 * Amazon Simple Storage Service (S3) * 適合場景: * 上傳和存取大量靜態文件、映像和影片。 * 需要高耐久性和成本效益的儲存需求。 * 特點: * 無限的儲存容量。 * 個別物件大小可達 5 TB。 * 單次寫入/多次讀取。 * 耐久性高達 99.999999999%。 * 支援 Web 功能,每個物件都有 URL。 * 優勢: * 適合完整物件的使用案例,尤其是靜態資料和高耐久性需求的情況。 * 成本效益高,無需 EC2 執行個體。 * 自動備份策略。 ### <font color=blue>Amazon EBS v.s. Amazon EFS</font> * Amazon Elastic Block Storage (EBS) * 連接到單個 EC2 執行個體。 * 可用區域層級資源,需在相同的可用區域中。 * 手動擴展,需佈建額外的磁碟區。 * 適合單一應用或資料庫的存儲需求。 * Amazon Elastic File System (EFS) * 支持多個 EC2 執行個體同時存取。 * 區域性資源,區域內的任何 EC2 執行個體都可以寫入。 * 自動擴展,不需手動佈建更多的磁碟區。 * 適合需要共用檔案系統的應用。 ### <font color=blue>Amazon RDS v.s. Amazon DynamoDB</font> * Amazon RDS * 適用場景:當需要進行複雜的資料分析和關聯式聯結時,RDS 是理想選擇。例如,企業級應用需要分析銷售供應鏈管理系統的弱點。 * 優勢:提供自動高可用性和復原功能,並讓使用者掌握資料、結構描述和網路的控制權。 * 特點:適合需要嚴格結構描述和複雜查詢的應用。 * Amazon DynamoDB * 適用場景:當應用不需要複雜的關聯式聯結,且需要高效能和高擴展性時,DynamoDB 是更好的選擇。例如,管理員工聯絡人清單等簡單資料結構。 * 優勢:無需進階結構描述,提供巨大的輸送量和 PB 級的擴展潛力。 * 特點:適合需要快速存取和簡單結構的應用,消除管理費用。 # 單元 6:安全性 ## AWS 共同責任模型 ![image](https://hackmd.io/_uploads/H1mSV1ee1x.png =70%x) * AWS 共同責任模型的核心理念是 AWS 和客戶共同負責雲端環境的安全。 * AWS 負責「雲端本身的安全(Security of the clou)」: * Physical security of data centers * Hardware and software infrastructure for running AWS services * Storage decommissioning * host operating * system (OS) access logging 系統訪問紀錄 * auditing(審核) * 網路基礎設施 * Intrusion detection 入侵檢測 * Virtualization infrastructure 虛擬化基礎架構 * Instance isolation Between customers workloads * 客戶負責「雲端中的安全」,包括: * ==Firewall configuration and security of OS== * Including patching, maintenance 包括修補、維護 * Network configurations 網路配置 * Use Amazon Tools * Securing app and datasets in the cloud * 責任分界線通常在操作系統層面: * AWS 負責操作系統以下的部分 * 建築商(AWS)負責提供堅固的牆壁和門 * 客戶負責操作系統及以上的部分 * 屋主(客戶)負責關門上鎖 ## 使用者許可與存取權限 ### <font color=blue>AWS Identity and Access Management (IAM)</font> #### IAM user 使用者 ![image](https://hackmd.io/_uploads/ry4sryle1l.png =70%x) > ==可以使用 AWS 帳戶進行身份驗證的人員或應用程式== * 根用戶(Root User) * AWS 帳戶的擁有者,擁有完全的控制權 * **除非必要,否則不要使用 Root User** * 建議啟用多重要素驗證(MFA)以增強安全性 * 只能使用 Root User 完成的操作 * 更改 Root User password * 更改 AWS Support plan * 恢復 IAM user 的許可權 * 變更帳號設定(例如:聯繫資訊、允許的區域) * IAM 用戶(IAM Users) * Root User 在 AWS 中建立的身分 * 可以是人或應用程式 * IAM 是一項免費的帳戶功能 * 默認沒有任何權限,需要透過 IAM Policy 授予 * 為每個員工建立個別的 IAM 使用者 * 可以分配唯一的用戶名和密碼 * 唯一的安全身分碼 #### IAM policy 政策 * 允許(拒絕)AWS 服務許可的「JSON 文件」 * 支援精細訪問控制(fine-grained access control) * 自訂使用者存取資源的層級 * 允許使用者存取 AWS 帳戶中的所有 Amazon S3 儲存桶,或僅存取特定儲存桶 * **最低權限原則** * IAM Policy 設定的範圍是 global,適用於所有 AWS 區域 ==兩種類型== 1. Identity-based 基於身份 * 將 policy 附加到任何 IAM entity * 包括 IAM user, IAM group, IAM role * 單個 entity 可以包含多個 Policy * 實體可以執行的操作 * 實體不能執行的操作 2. Resource-based 基於資源 * 將 policy 附加到資源(如 S3 儲存桶) * 指定誰有權訪問資源以及他們可以對資源執行哪些操作 * ==The policies are **inline only**, not managed== :::spoiler 解釋 ![image](https://hackmd.io/_uploads/SJM3jaPW1x.png) ::: * 僅受某些 AWS 服務支援 :::spoiler IAM policy example ![image](https://hackmd.io/_uploads/H1FbiawWJx.png) ![image](https://hackmd.io/_uploads/SJQen6Pbkl.png) > 1. 任何**未明確允許**的操作都將被拒絕 > -> out-of-the-box access are always deny(隱式拒絕)。 > 3. 任何**明確拒絕**的操作都將被拒絕。 > 4. 如果 allowed 語句和 deny 語句之間存在競爭,則 deny 語句總是獲勝。 ::: :::spoiler 範例:假設咖啡廳老闆必須為新聘僱的收銀員建立 IAM 使用者 ![image](https://hackmd.io/_uploads/HJVXP1xekx.png =70%x) > 允許 Amazon S3 中的特定動作:ListObject > 儲存貯體 ID:AWSDOC-EXAMPLE-BUCKET > 允許收銀員存取 AWSDOC-EXAMPLE-BUCKET 儲存貯體中的 "所有物件" ::: #### IAM group 群組 ![image](https://hackmd.io/_uploads/HJB42awZJl.png) * 被授予相同授權的 IAM 使用者的集合 * 一個 IAM User 可以屬於多個 IAM Group * Groups cannot be nested 組不能嵌套 :::spoiler 範例:假設咖啡廳老闆建立了「收銀員」群組 ![image](https://hackmd.io/_uploads/HJnedkxl1x.png =70%x) > 員工轉移至其他任務時,能夠更輕鬆地調整許可 > 「收銀員」IAM 群組 -> 「收銀員」IAM 群組 ::: #### IAM role 角色 * IAM role 是具有特定許可權的 IAM Identity * 在不需要永久授予權限的情況下,讓使用者或服務能夠執行特定的操作。 * temporary security credentials 臨時安全憑證 * 要先放棄當前角色的許可,才能取得新角色的許可 :::spoiler 範例:在 EC2 執行個體上執行的應用程式需要存取 S3 儲存桶 ![image](https://hackmd.io/_uploads/Sk0N6TvZ1e.png) 1. Define an IAM policy that grants read-only access to the S3 bucket 2. Attach the policy to a role 3. Allow the EC2 instance to assume the role ::: ### <font color=blue>以 IAM 使用者身份進行身份驗證以獲取訪問許可權</font> 定義 IAM 使用者 時,您可以選擇允許使用者使用的存取權限類型。 #### Programmatic access 程式設計訪問 **AWS CLI 和 AWS SDK 的存取權** 使用以下方式進行身份驗證: ``` Acces key ID (訪問金鑰 ID) Secret access key (秘密訪問金鑰) ``` #### AWS Management Console access 使用以下方式進行身份驗證:**需要 MFA 身份驗證** ``` 12-digit Account ID or alias (12 位帳戶 ID 或別名) IAM user name (IAM 使用者名) IAM password (IAM 密碼) ``` :::spoiler IAM MFA * MFA 提供更高的安全性 * 除了使用者名和密碼之外,MFA 還需要唯一的身份驗證代碼才能訪問 AWS 服務 ::: ### <font color=blue>AWS Organizations</font> * **集中管理多個 AWS 帳戶** * **將每個帳戶分組到組織單位(OU)中** * **再為每個 OU 附加不同的訪問策略** * **組織單位 (OU)** * 建立組織時,AWS Organizations 自動創建根目錄作為所有帳戶的父容器。 * 將帳戶分組,以便管理具有相似業務或安全需求的帳戶。 * 當政策套用到 OU,OU 中的所有帳戶會自動繼承該政策。 * 合併帳單 * 允許組織中所有帳戶共享一個帳單。 * 享受統一帳單和 AWS 的量大折扣。 * 使用 OU 可以隔離具有特定安全需求的工作負載或應用程式。 > 範例: > 如果某些帳戶只能存取特定的 AWS 服務, > 那麼我們可以將這些帳戶分組到同一個 OU, > 並附加相應的政策來限制服務存取。 * **服務控制政策 (Service control policies, SCP)** * 對帳戶的集中控制。 * 限制使用者和角色可以存取的 AWS 服務、資源和 API 動作。 * SCP 不授予許可權,而是指定了 OU 的最大許可權 * SCP 可以套用至: * 根目錄 * 個別成員帳戶 * OU ![image](https://hackmd.io/_uploads/BJ2o4lelJe.png =70%x) ![image](https://hackmd.io/_uploads/B1Sa4exekl.png =70%x) ![image](https://hackmd.io/_uploads/SJ3pNxelkx.png =70%x) ### <font color=blue>保護新的 AWS 帳戶:Root User</font> #### 步驟 1 :儘快停止使用 Root User 1. 當您以 Root User 登錄時,為自己創建一個 IAM User * 如果需要,請保存訪問金鑰 2. 創建一個 IAM group,授予其完全管理員權限(full administrator permissions) 3. 將剛剛創建的 IAM User 加到這個群組裡面 4. 關閉 Root User 並移除存取金鑰 5. 為使用者啟用密碼策略 6. 使用新 IAM User 的憑證登錄 7. 將 Root User 的憑證存在安全的地方 #### 步驟 2 :啟用多重身份驗證 (multi-factor authentication, MFA) * 對 Root User 以及所有 IAM User 進行 MFA * 可以使用 MFA 來控制 AWS 服務的存取 * 舉例: * 符合 MFA 標準的應用程式 * Google Authenticator 谷歌身份驗證器 * Authy Athenticator(Windows 手機應用程式) * U2F 安全金鑰設備:YubiKey * 硬體 MFA:Gemalto 提供的遙控鑰匙或顯示卡 #### 步驟 3 :使用 AWS CloudTrail CloudTrail 會追蹤帳戶上的所有用戶活動(存取 AWS 服務的 API 請求) * 免費追蹤 90 天的賬戶活動 * 超過 90 天: * 在 CloudTrail 控制台追蹤頁面中,按下 Create trail (創建跟蹤) * 為其命名,將其應用於所有區域 * 為日誌存儲創建新的 Amazon S3 儲存桶 * 在 S3 儲存桶上設定存取限制(例如,只有管理員使用者才應具有存取權限 ) #### 步驟 4 :啟用帳單報告,例如 AWS Cost and Usage Report * 帳單報告提供有關您對 AWS 資源的使用方式以及該使用的估計成本的資訊 * AWS 將報告傳送到您指定的 Amazon S3 儲存桶 * 每天至少更新一次 * 按小時或按天提供與您的 AWS 帳戶相關的估計費用 ## 合規 * 根據您在 AWS 託管的解決方案類型而定,您必須確保所有業務合規。 * 例如: * 軟體涉及歐盟的消費者資料 -> 要符合 GDPR 的規定 * 在美國執行健保相關應用程式 -> 要符合 HIPAA 的規定 * 用戶只需負責自身服務的合規性 * AWS 服務的合規性可以透過 AWS Artifact 獲得 ### <font color=blue>AWS Artifact</font> * **用於存取 AWS 安全性與合規報告**,包含 * AWS Artifact 協議 * 允許公司與 AWS 簽署關於特定類型資訊使用的協定。 * 可以在「**個別帳戶**」或「**AWS Organizations 中的所有帳戶**」檢閱、接受和管理協定。 * 協議涵蓋不同類型的法規需求,例如美國健康保險流通與責任法案 (HIPAA)。 * AWS Artifact 報告 * 提供第三方稽核人員的合規報告 * 可將 AWS 稽核成品提供給稽核員或監管員 * 包括: * AWS ISO certifications * Payment Card Industry (PCI) reports * Service Organization Control (SOC) reports ### <font color=blue>AWS Config</font> * **評估、審核和評價 AWS 資源的配置** * **簡化合規性審計和安全分析** * 持續監控配置 * 查看配置的更改紀錄 ### <font color=blue>客戶合規中心</font> * 提供「客戶合規案例」用於參考 * 存取相關主題的白皮書和文件 * 關鍵合規問題的 AWS Answers * AWS 風險和合規概觀 * 稽核安全檢查清單 ## (分散式)阻斷服務攻擊 (D)Dos ![image](https://hackmd.io/_uploads/rJQm_lexyx.png =40%x) ![image](https://hackmd.io/_uploads/ByPB_lgeyx.png =59%x) > 攻擊者可能會讓網站或應用程式充斥過多的網路流量, > 直到目標網站或應用程式超載而無法回應。 **例子:** 客戶可以致電咖啡廳點餐。每次接聽電話後,收銀員會接受點餐,並將訂單交給咖啡師。 然而,假設一個惡作劇者打電話多次下單,卻從沒來領取飲料。 這會導致收銀員無法接聽其他客戶的電話。 咖啡廳可以透過封鎖惡作劇者正在使用的電話號碼,來阻止錯誤的要求。 ### AWS Shield AWS Shield 這項服務用於保護應用程式免於遭受 DDoS ,包括: * AWS Shield Standard * 免費 * AWS Shield Advanced * 付費 * 提供詳細的攻擊診斷 * 偵測與減輕複雜的 DDoS 攻擊 * 可整合其他服務(如 Amazon CloudFront、Amazon Route 53 和 Elastic Load Balancing) ## 其他安全服務 ### <font color=blue>AWS Key Management Service (AWS KMS)</font> * **建立、管理和使用加密金鑰** * 與 AWS CloudTrail 集成以記錄所有金鑰使用方式 * 確保應用程式的資料在儲存(**靜態加密**)和傳輸(**傳輸中加密**)時是安全的 #### Encrytpion of data at rest 靜態數據的加密 * 靜態數據 = 物理存儲的數據 * 包括: * Amazon S3 * Amazon EBS * Amazon Elastic File System (Amazon EFS) * Amazon RDS managed databases #### Encryption of data in transit 傳輸中的數據加密 ![image](https://hackmd.io/_uploads/rJI4EAPZyx.png) * 傳輸層安全性 (TLS)(以前稱為 SSL)是一種開放標準協定 * AWS Certificate Manager 提供了一種管理、部署和續訂 TLS 或 SSL 證書的方法 ### <font color=blue>Amazon Cognito</font> * **使用者註冊、登錄和存取控制** * 能夠支持數百萬的使用者 * Cognito支持通過社交身份供應商(如 Facebook、Google 和 Amazon)以及企業身份供應商(如 Microsoft Active Directory)進行登錄 ### <font color=blue>AWS Shield</font> * **一種託管的 DDoS 防護服務** * AWS Shield Standard:無需額外費用 * Use it to minimize application downtime and latency ### <font color=blue>AWS WAF</font> * Web 應用程式防火牆 * 與 AWS CloudFront 和 Load Balancer 搭配使用 * 使用 Web 存取控制清單 (Web ACL) ### <font color=blue>Amazon Inspector</font> * 執行**自動化安全評定**來改善 APP 的安全性與合規性 * 檢查應用程式是否存在安全漏洞 * 檢查與安全最佳實務之間的差異 * 如:開放存取 AWS EC2、安裝有漏洞的軟體版本 * 提供安全發現項目清單,依嚴重性等級排列 * 包括:安全問題的說明、修正建議 ### <font color=blue>Amazon GuardDuty</font> ![image](https://hackmd.io/_uploads/H16ksxexJg.png =70%x) > 透過持續監控 AWS 環境中的網路活動和帳戶行為識別威脅 > 包括: VPC 流程日誌和 DNS 日誌 # 單元 7:監控和分析 ## Amazon CloudWatch * 簡介 * 一種 Web 服務 * 可讓您監控和管理各種指標 * 自動根據指標建立圖表 * 根據指標來設定警示 * 全面監控與分析 * 即時監控 AWS 基礎設施、應用程式和各種資源 * 追蹤**標準指標**和**自訂指標** * 例如:EC2 執行個體的 CPU 使用率;咖啡機生產的濃縮咖啡量 * 警示與通知系統 * **為指標設定閾值,達到時觸發警示** * **整合 Amazon SNS**,可發送多種形式的通知 * 集中化管理與可視化 * **CloudWatch 儀表板**提供集中化的監控介面 * 可自訂儀表板,顯示多種指標的近實時數據 * 從單一位置存取和管理所有 AWS 資源的指標與日誌 * 效能優化與資源管理 * 減少平均修復時間(MTTR) * 提高總體擁有成本(TCO)效率 ## AWS CloudTrail * 全面 API 稽核與詳細記錄: * 記錄==所有==對 AWS 資源的 API 請求(包括 EC2、DynamoDB、IAM 等) * 詳細記錄操作者身份、時間、IP 地址、API 呼叫回應及結果 * 記錄資源狀態的變更 * 支持記錄自定義事件,擴展應用範圍 * 安全性、合規性與數據存儲: * 提供完整的操作歷史記錄,有助於安全稽核 * 支持防篡改機制 * 如: S3 儲存貯體的文件庫鎖定 * 可在 S3 中無限期安全存儲日誌 * 支持歷史數據的長期分析和審計 * 事件查詢、分析與監控: * 通常在 15 分鐘內更新事件 * 提供多種篩選選項,方便查詢特定操作 * 支持近實時的日誌傳輸,有助於快速響應安全事件 * CloudTrail Insights 自動偵測異常的 API 活動,幫助識別潛在的安全威脅 * 與 AWS 生態系統的整合: * 可與 CloudWatch 整合,設置警報和通知 * 可與 AWS Config 整合,提供更全面的合規性視圖 * 支持多帳戶和多區域日誌收集,有助於大型組織的集中化管理和監控 * 啟用**CloudTrail Insights** * 讓 CloudTrail 自動偵測 AWS 帳戶中不尋常的 API 活動 範例:咖啡廳的老闆想了解名為 Mary 的新 IAM 使用者是誰 ![image](https://hackmd.io/_uploads/H1kLlbgx1l.png) > 套用篩選條件,只顯示 IAM 中「CreateUser」API 動作的事件 > 結果 -> 2020 年 1 月 1 日上午 9:00,IAM 使用者 John 透過 AWS 管理主控台建立新的 IAM 使用者 (Mary)。 ## AWS Trusted Advisor * 是一個基於 AWS 最佳實踐的**自動化顧問服務**,評估您的資源並提供即時指導 * 五大支柱: * 成本最佳化(Cost Optimization): * 檢查閒置的 RDS 執行個體 * 識別使用率過低的 EC2 執行個體和 EBS 磁碟區 * 提供節省成本的建議 * 效能(Performance): * 檢查 EBS 磁碟區效能是否受 EC2 執行個體輸出量影響 * 安全性: * 檢查 IAM 使用者密碼政策強度 * 確認根使用者是否啟用多重因素驗證 * 識別允許公開訪問的安全群組 * 容錯能力: * 檢查 EBS 磁碟區是否有快照(備份) * 評估 EC2 可用區域平衡狀況 * 服務配額: * 監控服務使用量是否接近或達到配額限制 * 提醒何時需要申請提高服務配額 * 額外功能:可設定電子郵件提醒給帳單、營運和安全聯絡人 * 舉例: * 如果您 **沒有為根使用者啟用多重因素驗證**,系統將會通知您。 * 如果您的 **EC2 執行個體使用率過低**,可以透過關閉執行個體來省點錢。 * 如果您的 **EBS 磁碟區未在合理時間內備份**,系統也會通知您。 ### AWS Trusted Advisor 儀表板 ![image](https://hackmd.io/_uploads/ByI0zWegkg.png =70%x) >儀表板介面會顯示三個層級的項目: 紅色圓圈:建議採取的行動 橘色三角形:建議的調查 綠色正方形:未偵測到問題 * 運作方式 * 對您帳戶中的每個支柱執行一系列即時檢查。 * 在 AWS 主控台中提供分類項目供查看。 * 可用性和定價: * 部分檢查免費包含在 AWS 帳戶中。 * 其他檢查根據您的支援計劃層級決定是否可用。 # 單元 8:定價和支援 ## AWS 免費方案 1. 永遠免費 * 這些優惠不會到期,而且適用所有 AWS 客戶。 * 例如: * AWS Lambda 每月允許 100 萬個免費請求和最多達 320 萬秒的運算時間。 * Amazon DynamoDB 每月允許 25 GB 的免費儲存。 2. 12 個月免費 * 這些優惠在您首次註冊 AWS 後的 12 個月內免費。 * 例如: * 特定數量的 Amazon S3 Standard 儲存 * Amazon EC2 每月運算時間的閾值 * 傳出 Amazon CloudFront 資料量。 3. 試用 * 短期免費試用優惠從啟用特定服務之日開始。 * 試用期間可能會因使用服務的天數或用量而有所不同。 * 例如: * Amazon Inspector 提供 90 天免費試用。 * Amazon Lightsail (可讓您執行虛擬私人伺服器的服務) 在 30 天內提供 750 小時的免費使用。 ## AWS 定價概念 ### How it works #### 按實際用量付費 針對每項服務,您按實際使用的資源量付費,無需簽訂長期合約或複雜的授權。 #### 預留容量,付費越少 有些服務提供保留選項,與隨需執行個體定價相比,提供大幅折扣。 例如,假如貴公司使用 Amazon EC2,您可以選擇在 Savings Plans 上執行此工作負載。 -> 因為相較於同等的隨需執行個體容量,該計劃可替您省下最高達 72%。 #### 以量計算的折扣,讓您用量越多付費越少 有些服務提供分級定價,因此每單位的成本會隨著用量增加而逐漸降低。 例如,您使用的 Amazon S3 儲存空間越多,每 GB 支付的費用就越少。 ### AWS 定價計算器 假設貴公司有興趣使用 Amazon EC2。不過您還不確定哪種 AWS 區域或執行個體類型對您的使用案例最具成本效益。 在 AWS 定價計算器中,您可以輸入詳細資訊,例如您需要的作業系統種類、記憶體需求以及輸入/輸出 (I/O) 需求。 透過使用 AWS 定價計算器,您可以檢閱不同 EC2 執行個體類型在各 AWS 區域的預估比較。 ## 帳單儀表板 1. 將您**本月份至今的與上個月比較**,並根據目前的用量獲得**下個月的預測**。 1. 檢視**本月至今各項服務的開銷**。 1. 檢視各項服務的**免費方案用量**。 1. 存取 **Cost Explorer** 並建立預算。 1. 購買及管理 **Savings Plans**。 1. 發布 AWS Cost and Usage Report。 :::spoiler AWS Cost and Usage Report 1. 核心功能特點 * 提供最完整的 AWS 成本和使用情況資料 * 支援多種時間維度的資料聚合(小時/天/月) * 資料以 CSV 格式儲存,方便處理和分析 2. 報告更新機制 * 首次建立後 24 小時內開始產生報告 * 每天至少更新一次,最多可達三次 * 月底進行最終確認,包含所有調整和費用 3. 資料存取與整合 * 直接存放在指定的 S3 儲存桶 * 可與 Athena、Redshift、QuickSight 等服務整合 * 支援透過 API 進行報告管理 4. 報告結構與內容 * 包含基本識別資訊(Identity) * 帳單相關資訊(Bill) * 詳細使用項目(LineItem) * 根據實際使用情況包含額外服務相關欄位 5. 特殊情況處理 * 支援退款和積分的處理 * AWS 支援費用在次月 6-7 日反映 * 提供版本控制選項,可選擇覆寫或保留歷史版本 ::: ## 合併帳單 AWS Organizations 的合併帳單功能,能**將您組織中的所有 AWS 帳戶全部集中在一張帳單上**。透過合併,您可以輕鬆地追蹤組織中所有連結帳戶的合併成本。一個組織允許的**預設帳戶數目上限為 4 個**,但如果需要,您可以聯絡 AWS 支援以增加配額。 在每月帳單上,您可以檢視每個帳戶所產生的**分項費用**。這可以加強您組織帳戶的透明度,同時維持每個月單一帳單的便利性。 合併帳單的另一個好處是能**在組織中帳戶中共用大量折扣定價、Savings Plans 和預留執行個體**。 -> 例如,單一帳戶可能沒有足夠的每月用量,不符合折扣定價。但是,合併多個帳戶時,其彙總用量可能會產生適用於組織中所有帳戶的優勢。 :::spoiler 流程圖 ![image](https://hackmd.io/_uploads/Sk3l4HGXJe.png =70%x) ![image](https://hackmd.io/_uploads/HyXW4SG7ye.png =70%x) ![image](https://hackmd.io/_uploads/SyuZNHMXyg.png =70%x) ::: ## AWS Budgets ![image](https://hackmd.io/_uploads/H1HbHrMXJe.png) > 1. 在此範例中,您可以查看下列資訊 > * 本月至今 Amazon EC2 產生的金額:136.90 USD > * 根據使用模式,本月預測支出金額:195.21 USD > 2. 也可以查看**目前用量與預算用量的比較**,還有**預測用量與預算用量的比較** > * 預測與預算的比較比率:125.17% > * 預測金額:56.33 USD > * 原編列預算:45.00 USD > * 增加原因:預測支出超過該月為該項目編列的預算金額 * 建立預算來規劃服務用量、服務成本和執行個體保留 * AWS Budgets 中的資訊每天會更新三次 * 在用量超過 (或預測會超過) 預算金額時設定自訂提醒 ## AWS Cost Explorer ![image](https://hackmd.io/_uploads/rkvXLBGQyg.png) >此 AWS Cost Explorer 儀表板範例顯示了 6 個月內 Amazon EC2 執行個體的每月成本。每個月的長條會區分不同 Amazon EC2 執行個體類型 (例如 t2.micro 或 m3.large)。 * 以控制台為基礎的服務,讓您透過視覺化的方式查看和分析在 AWS 上的支出情形。 * 有預設報告,說明成本前五高的 AWS 服務之成本和用量 * 也可以套用自訂篩選條件和群組來分析資料 * 例如,您可以檢視每小時的資源使用狀況。 * 會顯示您在哪項服務上花費最多,並提供 12 個月的歷史資料 ## AWS 支援計畫 * 基本功能(所有計劃都包含) * 24/7 客戶服務 * 白皮書、文件和支援社群的存取權限 * AWS Trusted Advisor(基本檢查) * AWS 個人運作狀態儀表板 * 無限次建立技術支援案例(==Basic除外==) * 重要注意事項 * 所有付費支援計劃都採用按月付費制 * 不需要長期合約 * 可根據業務需求隨時調整計劃 * 價格會根據 AWS 使用量而變動 ### AWS Support 計劃總覽 ![image](https://hackmd.io/_uploads/HkSTDSzm1x.png) ### 回應時間承諾 ![image](https://hackmd.io/_uploads/r1Q0PrfXJg.png) ### 進階功能 ![image](https://hackmd.io/_uploads/H1XJuSzmJl.png) ### 企業級特殊功能 ![image](https://hackmd.io/_uploads/HyCk_rf7Je.png) ### Technical Account Manager (TAM) * Enterprise On-Ramp 跟 Enterprise 可與 TAM 聯絡。 * 主要職責包括: * 基礎設施事件管理 * Well-Architected 審查 * 營運審查 ## AWS Marketplace ![image](https://hackmd.io/_uploads/SJL2qrM7ye.png) > AWS Marketplace 提供多種類別的產品,例如基礎設施軟體、DevOps、資料產品、專業服務、商業應用程式、機器學習、工業和物聯網 (IoT)。 > >在每個類別中,您可以瀏覽子類別中的產品清單,以縮小搜尋範圍。例如,DevOps 類別中的子類別包含像是應用程式開發、監控和測試等領域。 **AWS Marketplace 是一個數位化目錄平台,提供第三方軟體的快速部署和管理服務。** * 一鍵式部署,無需建置、安裝和維護執行 * 可使用已擁有的年度授權,並將其用於 AWS 部署中,或是實支實付的隨需選項 * 許多供應商甚至提供免費試用版或 Quick Start 計畫 **您也可以根據產業和使用案例探索軟體解決方案。** -> 假設貴公司屬於醫療保健產業,在 AWS Marketplace 中,您可以檢閱實際使用案例,包括: * 實作解決方案以保護患者紀錄 * 使用機器學習模型來分析患者的病歷並預測可能的健康風險。 # 單元 9:遷移和創新 ## AWS 雲端採用架構 (AWS CAF) AWS 雲端採用架構 (AWS CAF) 將指導內容歸納為六個重點領域,稱為「觀點」,每個觀點都涉及不同的責任。 * 「業務」、「人員」和「管控」這三個觀點著重於業務能力。 * 「平台」、「安全」和「營運」這三個觀點著重於技術能力。 ### 業務觀點 (Business Perspective) * 主要目標:確保 IT 投資與業務成果連結 * 關鍵角色: * 業務經理 * 財務經理 * 預算負責人 * 策略關係人 > **實例:某零售公司決定採用 AWS 建立電商平台,業務經理評估投資報酬率(ROI),財務經理規劃預算分配,共同制定符合公司數位轉型策略的雲端採用計畫。** ### 人員觀點 (People Perspective) * 主要目標:發展變更管理策略,確保順利採用雲端 * 關鍵角色: * 人力資源 * 人力配置 * 人事經理 > **實例:企業進行雲端轉型時,HR 團隊規劃了一系列 AWS 認證培訓課程,並招募具備雲端經驗的人才,同時為現有 IT 團隊安排技能提升計畫。** ### 管控觀點 (Governance Perspective) * 主要目標:確保 IT 策略與業務策略一致 * 關鍵角色: * CIO * 計畫經理 * 企業架構師 * 業務分析師 * 投資組合經理 > **實例:金融機構建立雲端治理框架,包含成本管理、安全合規和風險控制政策,確保所有雲端專案符合監管要求。** ### 平台觀點 (Platform Perspective) * 主要目標:實作雲端解決方案和遷移策略 * 關鍵角色: * CTO * IT 經理 * 解決方案架構師 > **實例:製造公司將其 ERP 系統遷移至 AWS,架構師團隊設計了混合雲架構,確保與現有系統順利整合。** ### 安全觀點 (Security Perspective) * 主要目標:確保安全性、合規性和風險管理 * 關鍵角色: * CISO * IT 安全經理 * IT 安全分析師 > **實例:醫療機構在採用 AWS 時,安全團隊實施了多層次安全架構,包含加密、存取控制和監控機制,確保符合 HIPAA 規範。** ### 營運觀點 (Operations Perspective) * 主要目標:確保日常營運和維護的有效性 * 關鍵角色: * IT 營運經理 * IT 支援經理 > **實例:電信公司建立 24/7 雲端營運中心,實施自動化監控和警報系統,確保服務持續性和問題快速回應。** ## 遷移策略:六個 R ### 重新託管 (Rehost) * 又稱:搬運轉移 (Lift and Shift) * 特點: * 幾乎零修改的遷移 * 最快速的遷移方式 * 可節省約 30% 成本 * 適合後續優化 > **例如:將現有的 Web 應用程式直接遷移到 EC2 實例上,保持原有架構不變。** ### 重組平台 (Replatform) * 又稱:精進搬遷 (Lift and Reshape) * 特點: * 進行有限度的優化 * 不修改核心程式碼 * 採用 AWS 託管服務 * 維持基本架構 > **例如:將自建 MySQL 資料庫遷移到 Amazon RDS 或 Aurora,提升管理效率但不改變應用程式邏輯。** ### 淘汰 (Retire) 特點: * 完全停用應用程式 * 節省 10-20% IT 支出 * 消除冗餘系統 * 降低維護成本 > **例如:發現多個重複功能的舊系統,選擇保留最新版本,淘汰其餘版本。** ### 保留 (Retain) 特點: * 暫時保留在原環境 * 延後遷移決策 * 降低風險 * 符合特定需求 > **例如:即將在 8 個月內退役的舊系統,選擇繼續在原環境運行直到生命週期結束。** ### 重新購買 (Repurchase) * 又稱:Drop and Shop * 特點: * 轉向 SaaS 解決方案 * 可能需要較高前期成本 * 降低維護負擔 * 獲得新功能 > **例如:放棄自建 ERP 系統,改用 SaaS 服務如 Salesforce。** ### 重構 (Refactor) * 又稱:重新架構 (Re-architect) * 特點: * 完全重寫程式碼 * 採用雲原生架構 * 最高前期成本 * 最大效益潛力 > **例如:將單體應用改寫為微服務架構,充分利用 AWS Lambda 和容器服務。** ## AWS Snow 系列 ![image](https://hackmd.io/_uploads/B1LJOUG71l.png) * **AWS Snow 系列是實體裝置的集合,可協助以實體方式將 EB 級資料輸出入 AWS** * 由 **AWS Snowcone、AWS Snowball 和 AWS Snowmobile** 所組成 * 這些裝置提供不同的容量臨界點 * 由 AWS 擁有和管理 * 與 AWS 安全、監控、儲存管理和運算功能整合。 ### AWS Snowcone * 小型、堅固且安全的邊緣運算與資料傳輸裝置 * 容量:8 TB * 邊緣運算能力 * 支援 EC2 執行個體 * 支援 AWS IoT Greengrass * 適用場景: * TB 級資料傳輸 * 分析資料收集 * 影片庫備份 * 映像集合儲存 * 磁帶替換方案 ### AWS Snowball Edge * 分成兩種版本: 1. Compute Optimized: * 104 個 vCPU、416 GiB 記憶體 * 80 TB 的硬碟 (HDD) 容量 + 28TB NVMe 固態硬碟 (SSD) * 著重運算效能 * 機器學習、全動態影片分析 * 適合邊緣運算任務 2. Storage Optimized: * 40 個 vCPU 和 80 GiB 記憶體 * 80 TB 的硬碟 (HDD) 容量 + 1TB SATA 固態硬碟 (SSD) * 著重儲存容量 * 適合大量資料傳輸 * 特色功能: * 可放入標準伺服器機架 * 支援叢集部署 * 支援 EC2 相容的 AMI、AWS IoT Greengrass、Lambda 函數 * 使用案例包括 * 擷取來自 IoT 裝置的串流、映像壓縮、影片轉碼,甚至是工業訊號。 * 客戶通常會將這些產品運送到偏遠的位置,因為要在那些地方配置大量的運算能力比較困難。 ### AWS Snowmobile * EB 級的資料傳輸服務,可用來將大量資料傳輸到 AWS。 * AWS Snowmobile 是長達 45 呎 (13.7 公尺) 的加固貨櫃,由貨櫃聯結車拖行 * 適用場景: * 超大規模資料中心遷移 * 資料中心關閉專案 * PB 級資料傳輸 ## 利用 AWS 進行創新 ### 無伺服器應用程式 無伺服器是指不需要您佈建、維護或管理伺服器的應用程式。 **AWS Lambda** 是其中一個可用來執行無伺服器應用程式的服務。 如果您設計架構以觸發 Lambda 函數執行程式碼,您可以略過管理伺服器機群的需求。 使用無伺服器應用程式建置您的架構,可讓您的開發人員專注於其核心產品,不必管理和操作伺服器。 ### 機器學習 傳統的機器學習 (ML) 開發非常複雜、昂貴、耗時且容易出錯。 **Amazon SageMaker** 可將困難的工作從流程中排除,並讓您能夠快速建立、訓練和部署 ML 模型。 您可以使用 ML 來分析資料、解決複雜的問題,並在問題發生之前預測結果。 ### 人工智慧 AWS 提供多種採用人工智慧 (AI) 的服務。 * 使用 Amazon CodeWhisperer 在編寫程式碼時取得程式碼建議,並找出程式碼中的安全問題。 * 使用 Amazon Transcribe 將語音轉換為文字。 * 使用 Amazon Comprehend 發現文字中的模式。 * 使用 Amazon Fraud Detector 識別潛在的線上詐騙活動。 * 使用 Amazon Lex 建立語音和文字 Chatbot。 # 單元10:AWS Well-Architeched Framework * Well-ArchitectedFramework 的設計目的是為了讓 AWS 的架構師、開發者和使用者能夠為其應用程式建立安全、高效能、具有彈性和高效的基礎設施。 * 它由六大支柱組成,以確保對架構審查和設計的一致性方法。 ### 卓越營運 卓越營運指的是能夠執行和監控系統以實現商業價值,並持續提升支援流程和程序的能力。 雲端卓越營運的設計原則包括以程式碼形式執行營運、標註文件、預測失敗,以及進行頻繁、小型、可逆的變更。 ### 安全性 安全支柱是保護資訊、系統和資產,同時透過風險評估和緩解策略來實現商業價值的能力。 考量架構的安全時,請套用下列最佳實務: * 盡可能自動化安全最佳實務。 * 在所有層級施行安全措施。 * 保護傳輸中和靜態的資料。 ### 可靠性 可靠性是系統執行以下作業的能力: * 從基礎設施或服務中斷中恢復 * 動態取得運算資源以滿足需求 * 減少配置不當或暫時性網路問題等中斷情況 可靠性包括測試恢復流程、水平擴展以增加總體系統可用性,以及從故障中自動恢復。 ### 效能達成效率 效能達成效率是指有效率使用運算資源以符合系統需求,並在需求變化和技術升級時維持效率的能力。 評估您架構的效能達成效率,包括更頻繁進行實驗、使用無伺服器架構、以及設計能夠在幾分鐘內擴展到全球的系統。 ### 成本最佳化 成本最佳化是能以最低價格點執行系統來提供商業價值的能力。 成本最佳化包括採用消費模型、分析和歸因支出、以及使用受管服務降低擁有成本。 ### 永續發展 永續發展是指藉由儘可能提高已佈建資源的效益及減少所需總資源,以減少能源消耗和提高工作負載所有元件的效率,從而持續改善永續發展影響的能力。 促進良好的永續發展設計: * 瞭解您的影響力 * 建立永續發展目標 * 將利用率最大化 * 預測並採用新的、更有效率的硬體和軟體產品 * 使用受管服務 * 減少雲端工作負載的下游影響 # 考試準備 企業只需上傳應用程式,Elastic Beanstalk 就能自動處理容量佈建、負載平衡、自動調整規模和應用程式運作狀態監控的部署細節。 AWS Outposts 是一種以混合雲端方法執行基礎設施的服務。 Amazon Augmented AI (Amazon A2I) 為常見的機器學習使用案例提供了內建人工審查工作流程,例如內容審核和從文件中擷取文字。 透過持續監控 AWS 環境內的網路活動和帳戶行為識別威脅 - AWS GuardDuty 有助於保護應用程式防止分散式阻斷服務 (DDoS) 攻擊的服務 - AWS Shield 檢查應用程式是否有安全漏洞,以及是否偏離安全最佳實務的服務 - Amazon Inspector 監控 Web 應用程式之網路要求的服務 - AWS WAF ![image](https://hackmd.io/_uploads/Hk89ycEQyl.png) ![image](https://hackmd.io/_uploads/BJELecVX1g.png)