AWS 雲端服務提供豐富的功能,涵蓋計算、儲存、資料函式庫、網路等導向,支援全球化佈署和高用性架構。理解 AWS 全球基礎設施、區域與可用區的組態,是建構穩健應用程式的基礎。此外,透過 IAM 許可權管理,確保資源的安全性,並利用 CloudFormation 和 CDK 等工具實作自動化佈署和基礎設施即程式碼(IaC)。CloudWatch 提供即時監控和日誌管理,協助維護系統穩定性。最後,VPC 和子網路的規劃,以及安全群組的設定,則是建構安全可靠網路環境的關鍵。
AWS 全球基礎設施與服務概覽
AWS 提供了一系列的雲端服務,涵蓋了計算、儲存、資料函式庫、分析、機器學習等多個領域。這些服務被劃分為多個類別,包括計算服務、儲存服務、資料函式庫服務、安全服務等。
AWS 服務類別
AWS 的服務可以分為以下幾大類別:
- 計算服務:提供虛擬伺服器、容器服務、無伺服器運算等功能,例如 Amazon EC2、Amazon ECS 和 AWS Lambda。
- 儲存服務:提供物件儲存、檔案儲存和區塊儲存等功能,例如 Amazon S3、Amazon EFS 和 Amazon EBS。
- 資料函式庫服務:提供關係型資料函式庫、NoSQL 資料函式庫和資料倉儲等功能,例如 Amazon RDS、Amazon DynamoDB 和 Amazon Redshift。
- 安全、身份和合規服務:提供身份和存取管理、安全監控和合規工具等功能,例如 AWS IAM、AWS CloudTrail 和 AWS Config。
AWS 全球基礎設施
AWS 的全球基礎設施由多個區域(Region)和可用區(Availability Zone)組成。區域是指 AWS 在全球範圍內建立的資料中心叢集,而可用區是指在同一區域內的多個獨立資料中心。
區域(Region)
AWS 區域是根據地理位置命名的,例如亞太地區的新加坡、孟買和海德拉巴。每個區域都有一個唯一的區域程式碼,例如 eu-west-1 代表歐洲西部(愛爾蘭)區域。
選擇適當的 AWS 區域時,需要考慮以下四個因素:
- 延遲:選擇靠近使用者群體的區域,以降低延遲。
- 價格:不同區域的價格可能不同,需要根據實際需求選擇合適的區域。
- 服務可用性:不是所有 AWS 服務都可在每個區域使用,需要檢查 AWS 檔案以確認所需服務的可用性。
- 資料合規性:需要根據相關法規要求選擇合適的區域,以確保資料儲存和處理符合法規要求。
可用區(Availability Zone)
可用區是指在同一區域內的多個獨立資料中心。每個可用區都有獨立的電源、網路和連線,以降低多個可用區同時故障的風險。
每個可用區都由一個或多個實體資料中心組成,並且透過冗餘的低延遲私人網路連結相互連線。這種設計確保了 AWS 服務的高用性和容錯能力。
身份和存取管理(IAM)
AWS IAM 是一種全面的身份和存取管理服務,提供身份驗證和授權功能。IAM 可以幫助組織管理使用者身份、許可權和存取控制,確保只有授權的使用者和服務可以存取 AWS 資源。
IAM 的主要功能包括:
- 身份驗證:驗證使用者、系統和服務的身份。
- 授權:控制使用者和服務對 AWS 資源的存取許可權。
- 精細化許可權控制:允許管理員根據使用者的角色和職責分配精細化的許可權。
透過使用 IAM,組織可以實作強大的存取控制措施,確保 AWS 環境的安全性和完整性。
圖表翻譯:AWS 全球基礎設施示意圖
此圖示展示了 AWS 全球基礎設施的架構,包括多個區域和可用區。每個區域內有多個可用區,透過冗餘的私人網路連結相互連線。
圖表翻譯: 此圖示顯示了 AWS 的全球基礎設施佈局,包括區域和可用區的分佈。區域是指 AWS 在全球範圍內建立的資料中心叢集,而可用區是指在同一區域內的多個獨立資料中心。這種設計確保了 AWS 服務的高用性和容錯能力。
AWS IAM 的全面解析
AWS Identity and Access Management(IAM)是 AWS 提供的核心服務之一,用於管理和控制使用者對 AWS 資源的存取許可權。IAM 提供多種強大的功能,確保 AWS 環境的安全性和管理的便捷性。
IAM 的主要功能
全球運作:IAM 是一個全球性服務,使用者可以在任何 AWS 區域使用 AWS 管理控制檯存取和管理組態。這種全球可存取性提供了一個統一和集中的方法來管理不同區域的安全設定。
無縫整合:IAM 預設與各種 AWS 服務無縫整合,確儲存取管理和安全措施擴充套件到整個 AWS 服務範圍內,提供一致且全面的安全態勢。
密碼策略管理:IAM 允許管理員建立和實施密碼策略,指定複雜度要求和強制輪換間隔,確保密碼符合指定的安全標準並定期更新,以降低潛在漏洞。
多因素身份驗證(MFA):IAM 支援多因素身份驗證(MFA),在使用者存取 AWS 資源之前需要提供多種驗證形式,進一步增強安全性,降低未授權存取嘗試的風險。
身份聯合:IAM 支援身份聯合,允許擁有來自外部來源(如企業網路或網際網路身份提供者)的密碼的使用者在 AWS 帳戶中獲得臨時存取許可權。這種功能簡化了具有現有憑據的使用者的存取,同時保持安全性。
可用性和成本:IAM 對所有 AWS 客戶免費,提供了一種包容且具成本效益的解決方案,用於管理 AWS 帳戶中的存取和安全。無需額外費用即可利用 IAM 的功能。
IAM 使用者憑據
IAM 使用者由名稱和特定的憑據組成。在設定使用者時,可以選擇授予使用者以下存取許可權:
AWS 管理控制檯存取:對於 AWS 管理控制檯存取,使用者被提供使用者名稱和密碼。
程式化存取:透過建立與 AWS CLI 和 AWS API 相容的存取金鑰,提供對 AWS 命令列介面(AWS CLI)和 AWS 應用程式介面(AWS API)的程式化存取。
程式碼範例:建立 IAM 使用者
{
"UserName": "exampleuser",
"Password": "ComplexP@ssw0rd",
"Permissions": [
"s3:GetObject",
"s3:ListBucket"
]
}
內容解密:
- 上述 JSON 檔案展示了建立 IAM 使用者的基本結構,包括使用者名稱、密碼和許可權。
UserName指定了使用者的名稱。Password設定了使用者的密碼,需符合密碼策略的要求。Permissions列出了授予使用者的許可權,如對 S3 物件的讀取和列舉桶的許可權。
IAM 群組
IAM 群組是使用者的集合,群組內的所有使用者都繼承了分配給該群組的許可權。這種方法簡化了向多個使用者授予許可權的過程,提供了一種更方便和可擴充套件的方法來管理 AWS 帳戶中的使用者許可權。
IAM 群組結構
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title AWS 雲端服務架構與管理
package "網路架構" {
package "應用層" {
component [HTTP/HTTPS] as http
component [WebSocket] as ws
component [gRPC] as grpc
}
package "傳輸層" {
component [TCP] as tcp
component [UDP] as udp
component [TLS/SSL] as tls
}
package "網路層" {
component [IP] as ip
component [ICMP] as icmp
component [路由協議] as routing
}
package "鏈路層" {
component [Ethernet] as eth
component [WiFi] as wifi
component [ARP] as arp
}
}
http --> tcp
ws --> tcp
grpc --> tcp
tcp --> tls : 加密
tls --> ip
udp --> ip
ip --> routing
routing --> eth
routing --> wifi
eth --> arp
@enduml
圖表翻譯: 此圖示展示了 IAM 群組的結構,包括開發團隊、安全團隊和 DevOps 團隊。每個團隊下有多個使用者成員,如開發者、安全員和 DevOps 工程師。這種結構有助於清晰地分隔不同團隊的許可權。
IAM 策略
IAM 策略是一個 JSON 檔案,用於定義 AWS 中的許可權。這些策略在各種 AWS 服務中具有可重用性,可以分配給多個個人和團隊。AWS 將策略分為兩大類別。
程式碼範例:IAM 策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/*"
}
]
}
內容解密:
- 此 JSON 檔案定義了一個 IAM 策略,允許對指定的 S3 桶中的物件進行讀取操作。
Version指定了策略的版本。Statement部分定義了策略的具體內容,包括效果(Allow或Deny)、動作(Action)和資源(Resource)。
AWS 許可權管理與 CloudFormation 自動化佈署
AWS 提供多種方式來管理資源存取許可權和自動化佈署,本文將探討 AWS 的許可權管理機制以及如何使用 CloudFormation 進行資源自動化佈署。
AWS 許可權管理機制
AWS 提供多種型別的政策來控制對資源的存取,包括:
- Identity-Based Policies(根據身份的政策):將許可權分配給 IAM 身份,如使用者、群組或角色。
- Resource-Based Policies(根據資源的政策):直接將政策嵌入特定資源中,如 Amazon S3 儲存桶的安全組態。
- Permissions Boundaries(許可權邊界):設定 IAM 實體的最大許可權限制。
- Organizations SCPs(服務控制政策):在組織或組織單位(OU)中設定最高許可權級別。
- Access Control Lists(ACLs,存取控制清單):管理外部帳戶實體與資源之間的互動。
- Session Policies(會話政策):在 CLI 或 API 中使用角色或聯合身份時,限制授權範圍。
IAM 政策範例解析
以下是一個簡單的 IAM 政策範例,展示瞭如何為 S3 儲存桶設定特定許可權:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::practical-aws",
"Condition": {
"StringLike": {"s3:prefix": [""]}
}
},
{
"Sid": "AllowGetObject",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::practical-aws/*"
},
{
"Sid": "DenyPutObject",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::practical-aws/*"
}
]
}
內容解密:
- AllowListBucket: 允許列出儲存桶中的內容。
- AllowGetObject: 允許從儲存桶中檢索物件。
- DenyPutObject: 禁止上傳新物件到儲存桶。
這個政策允許使用者列出和下載 S3 儲存桶中的物件,但禁止上傳新物件,從而實作精細的存取控制。
CloudFormation 自動化佈署
AWS CloudFormation 是一種服務,能夠簡化 AWS 資源的管理和佈署。透過定義範本,CloudFormation 可以自動化資源的組態和佈署,減少手動操作的複雜性和錯誤。
CloudFormation 的優勢
- 自動化資源佈署:CloudFormation 可以根據範本自動佈署資源,如 Lambda、EC2 和 RDS 例項等。
- 一致性和可靠性:透過範本定義資源組態,確保不同環境中的資源一致性。
- 與其他 AWS 服務整合:CloudFormation 可以與 CodePipeline 和 Jenkins CI/CD 管道等服務整合,實作自動化佈署和持續整合。
CloudFormation 工作流程
- 使用 JSON 或 YAML 編寫範本,定義所需的 AWS 資源。
- 將範本提交給 CloudFormation,建立一個堆積疊(Stack)。
- CloudFormation 根據範本自動組態和佈署資源。
- 如果需要刪除資源,可以刪除堆積疊,相關資源將被一併移除。
AWS 雲端服務管理與監控工具詳解
CloudFormation 的挑戰與侷限性
AWS CloudFormation 是用於定義和管理 AWS 資源的強大工具,但它存在一些顯著的缺點。由於需要明確定義所有應用程式資源,這導致範本變得冗長,YAML 和 JSON 檔案變得龐大且難以管理。為瞭解決這些問題,AWS 推出了名為 CDK 的另一項服務。
AWS Cloud Development Kit (CDK)
AWS CDK 提供了一個強大的框架,讓開發者能夠使用可重複使用的元件來構建雲端環境。這些可重複使用的元件被稱為「constructs」。在整合開發環境(IDE)中,開發者可以利用函式庫和元件來無縫地建立和生成雲端服務。
CDK 的優勢
- 簡化基礎設施開發流程:CDK 提供了一種直接且易於使用的方法,讓開發者能夠高效地建立複雜且可擴充套件的基礎設施。
- 提高靈活性與敏捷性:CDK 讓開發者能夠使用熟悉的程式語言進行應用程式建模,從而加速雲端開發。
CDK 的運作原理
在內部,CDK 利用 CloudFormation 將程式碼轉換為 CloudFormation 範本。一個 CDK 應用程式包含多個堆積疊(stacks),這些堆積疊最終會轉化為 CloudFormation 堆積疊。這種方法簡化了管理流程,並且開發者不再需要直接與 YAML 或 JSON 範本互動。
Amazon CloudWatch:即時監控與日誌管理
Amazon CloudWatch 提供對 AWS 資源和應用程式的即時監控。它允許收集和監控反映資源和軟體效能的量化指標。透過 CloudWatch 首頁,可以自動檢視所有正在使用的 AWS 服務的指標,並建立自定義儀錶板來顯示特定應用程式的指標。此外,還可以設定警示來監控指標、接收通知,或在超出閾值時自動調整資源。
CloudWatch 的主要功能
- 即時監控:提供對資源使用情況、應用程式效能和操作狀態的全面可視性。
- 自定義儀錶板:允許建立自定義儀錶板來監控特定的應用程式和選定的指標集合。
- 警示設定:可以設定警示來監控指標並在必要時採取行動。
CloudWatch 日誌管理
CloudWatch 日誌功能允許對來自不同來源的日誌資料進行組織和維護。瞭解日誌事件和日誌流的概念對於有效地管理和分析日誌資料至關重要。
日誌事件(Log Event)
日誌事件代表從受監控應用程式或資源捕捉的活動條目。每個日誌事件都包含時間戳和相關的事件訊息,提供關於記錄活動的詳細資訊。
日誌流(Log Stream)
日誌事件被組織成日誌流,形成與相同受監控資源相關的日誌事件的連續序列。例如,日誌流將由 EC2 或 Lambda 生成的所有日誌事件整合在一起,允許使用者方便地篩選或查詢這些流以獲得有價值的洞察。
AWS 網路基礎與虛擬私有雲(VPC)詳解
AWS 網路基礎是建構雲端基礎設施的重要環節,涵蓋了多項服務以實作快速、可靠且安全的網路連線。本章將探討 AWS 網路的核心概念,包括虛擬私有雲(VPC)、子網路(Subnets)、安全群組(Security Groups)等關鍵元件。
網路基礎與 AWS 網路服務
在 AWS 環境中,裝置和服務之間的通訊是透過網路實作的。AWS 提供了一系列按需、高度可用且可擴充套件的雲端服務,包括 Amazon VPC、Amazon Gateway、負載平衡器(Load Balancers)、Amazon Route 53 等。這些服務共同構成了 AWS 網路的基礎。
當使用者存取網站或使用應用程式時,資料和請求會從裝置傳輸到託管網站或應用程式的伺服器,並傳回。這一過程涉及多個環節,如 Wi-Fi、ISP 網路、海底光纖電纜等。然而,藉助雲端技術,全球佈署變得迅速而高效。例如,AWS 允許在不同物理位置快速佈署應用程式,從而減少延遲並提升使用者經驗。
虛擬私有雲(VPC)
AWS VPC 是一個在 AWS 雲中建立的獨立網路,類別似於傳統的資料中心網路。換言之,它是在雲中的私有雲。Amazon VPC 允許使用者為 Amazon 資源建立一個隔離的虛擬網路,確保隱私並啟用受限的操作。任何擁有 AWS 帳戶的使用者都可以託管 Amazon VPC,並藉助各種工具和服務進行管理。
VPC 的主要特性
- 隔離的私有網路:VPC 提供了一個與外部世界隔離的私有網路,允許使用者執行不適合公開存取的操作。
- 多層安全措施:VPC 實施了多層安全措施,包括安全群組和網路存取控制列表(NACLs)。
- 靈活的子網路劃分:VPC 可以劃分為多個子網路,每個子網路位於單一的可用區內。
子網路(Subnets)
在 AWS 中,子網路是 VPC 中的一個較小、獨立的網路段,包含特定區域內的一組機器。如圖 1-7 所示,一個可用區內可以包含多個子網路。需要注意的是,每個子網路都侷限於單一可用區內。
子網路的型別
- 公有子網路:與 Internet Gateway 相連,允許存取 Internet。
- 私有子網路:與 Internet 隔離,不允許直接存取 Internet。
每個子網路都需要與路由表(Routing Table)關聯,以定義流量路由規則。將大型網路劃分為較小的網際網路路有助於減輕網路擁塞。AWS 允許在一個範圍內建立最多 200 個使用者定義的子網路,從而實作高效的網路管理和最佳化資料流。
安全群組(Security Groups)
AWS 安全群組作為虛擬防火牆,控制進出 AWS 資源的網路流量。它們透過定義入站和出站連線規則來增強安全性,只允許授權流量透過。
安全群組的關鍵特點
入站規則:控制允許進入資源的流量。可以指定允許的協定(如 TCP、UDP)、埠範圍(如 HTTP 的 80 埠)和流量的來源(如特定的 IP 地址或其他安全群組)。
#### 範例入站規則組態 | 型別 | 協定 | 埠範圍 | 來源 | |
|
|
|
| | HTTP | TCP | 80 | 0.0.0.0/0 |
2. **出站規則**:控制允許離開資源的流量。同樣可以指定協定、埠範圍和流量的目的地。
3. **狀態化行為**:當資源接收到允許的入站流量時,回應流量會自動被允許離開資源,即使它沒有明確匹配出站規則。
4. **多重安全群組**:可以將多個安全群組關聯到單一資源,提供更細粒度的控制和更複雜的流量組態。
5. **預設安全群組**:每個 VPC 都有一個預設安全群組。預設情況下,該群組允許所有出站流量,但阻止所有入站流量,作為第一道防線。