Encryption & DownTime
若是希望資料可以加密,大多數的服務都是需要在啟用時就指定好,例如:EFS, RDS, EBS volume
在上面的服務中,若是要再之後才要進行加密,就必須透過新增服務加上 migrate data 的方式來達成
S3 在這個部份則是彈性許多,不僅可以 bucket/object level 啟用加密,也不會影響運行中的服務
KMS & CloudHSM
KMS & CloudHSM 都是用來加密資料用
KMS 用在可以接受 shared tenancy 的環境;CloudHSM 則是用在嚴格的獨立環境中的
KMS 只支援對稱加密(symmetric encryption),CloudHSM 則是同時支援對稱加密 & 非對稱加密(asymmetric encryption)
AMI
AMI 是用來產生 EC2 instance 的 template
可以從 EC2 instance 建立自己的 AMI
若是要透過 AMI 產生 instance,那就要先註冊
AMI 是 region level 的物件;若是要在其他 region 使用同樣的 AMI,那就要複製到 target region 並註冊
EBS Volume Type
僅有
gp2/gp3
&io1/io2
可以作為 boot volume,st1
&sc1
兩種 HDD 類型的 EBS volume 則無法
gp2 v.s. gp3
gp2 是舊型的 general purpose SSD type,有以下特性:
- IOPS 可以 burst 到 3000,但這需要 credit
- IOPS 會與 volume size 有關連,最大可以到 16000
- 每增加 1GB 會多 3 IOPS,因此 5334 GB 的 gp2 volume 可以取得最大的 IOPS
gp3 則是新型的 general purpose SSD type,特性如下:
- 基礎 IOPS 為 3000,並且有 125 MiB/s 的 throughput
- 可以獨立增加 IOPS 到 16,000 & throughput 到 1,000 MiB/s
Provisioned IOPS SSD
若是需要穩定的高 IOPS 的應用或是 IOPS 要求超過 16000,那可以考慮用這個類型的 volume type
適合用在 DB 或是對儲存效能敏感的 workload
io1
/io2
(容量範圍:4GB ~ 16TB)- 最大 PIOPS(provisioned) 為 64000,但這僅限於 Nitro EC2 instance;其他 type 的 EC2 instance 僅能發揮到 32000 IOPS
- 可以單獨調整 IOPS 上限,跟 volume size 無關
- 相較於 io1,io2 有較高的可用性 & IOPS (以相同價格為基礎作為計算)
io2 Block Express(容量範圍:4GB ~ 64TB):
- 低於 ms 級別的延遲
- 最大的 IOPS 可到 256,000,跟 volume size 有關,每增加 1GB 會多 1000 IOPS
io 系列的 volume type 都支援 EBS multi-attach (在同一個 AZ 的前提下)
- 但這情境平常不容易遇到,可能僅有在 application level 需要管理到 concurrent write 操作時才會使用
- 必須使用具備 cluster-aware 能力的檔案系統,像是
XFS
orEXT4
就並非是這一類的檔案系統io1
的 multi-attach 僅在特定幾個 region 有支援 (官網文件來源)
EBS Multi-Attach 預設是不開啟的,必須先 enable 後才可以使用 (參考資料)
Hard Disk
無法作為 boot volume
容量從 125MiB ~ 16TB
st1
(throughput optimized) 適合用於 big data、data warehouse、log processing … 這一類的 workload,max IOPS 為 500,max throughput 則為 500 MiB/ssc1
(cold hdd):不常存取的資料可以用這 volume type,max IOPS 250,max throught 250 MiB/s
EBS 重要功能(操作)說明
Volume Resizing
EBS volume 的容量僅能增加,不能減少;但若要增加 IOPS,那就只有 io 系列的 volume type 可以作到
EBS volume 容量調整後,還需要在作業系統中調整硬碟設定才可以吃到增加的容量,相關操作可參考官方文件
Snapshot
執行 snapshot 操作不需要先 detach volume,但建議這麼做,避免可能的資料不一致問題
snapshot 可以複製到不同的 AZ or region
若要有效管理 EBS volume snapshot,可考慮使用 Amazon Data Lifecycle Manager 來協助管理
Amazon Data Lifecycle Manager 可協助作到以下幾件事情:
- 對 EBS snapshot & EBS-backed AMI 進行自動化的 creation、retention、deletion … 等操作
- 執行定期備份(scheduled backup)、跨帳號 snapshot 複製(cross-account snapshot copy)、移除過期備份(delete outdated backup) …. 等功能
- 功能運行的基礎是基於
tag
的設定,因此必須為 EC2 instance or EBS volume 加上正確的 tag - 無法管理並非由 DLM 所建立出來的 snapshot or AMI
另外,還有個值得一提的功能是 FSR(Fast Snapshot Restore)
;由於 snapshot 是儲存在 S3,當真正要使用時才會從 S3 開始拉取,因此對於第一次存取的 volume block 就會很慢(I/O latency),而 FSR 基本上就是幫你把完整的 volume block 都先拉取過一輪,這樣之後使用透過 snapshot 產生的 EBS volume 的效能就會提昇很多;不過這功能很昂貴,要慎用,而且通常會是容量很大的 snapshot/volume 使用這功能才會有比較好的效益。
DLM 中可以直接開啟這功能
Encryption
一個加密後的 EBS volume 可以帶來以下的效果:
- 資料在 volume 中是加密的
- 資料從 instance 傳遞到 volume 的過程中是加密的
- 所有的 snapshot 都是加密的
- 加解密的過程都是透明的,因此對使用者來說,沒有什麼額外的使用負擔,只要選擇加密即可
若是要將非加密的 EBS volume 改成加密的 EBS volume,可以透過以下幾個步驟完成:
- 建立一個 snapshot (from 未加密的 EBS volume)
- 透過
copy
的方式,加密 snapshot - 透過加密後的 snapshot 產生 EBS volume
其實可以跳過第二個步驟,未加密的 snapshot 也可以直接產生一個加密後的 EBS volume
其他需要注意的地方:
- 加密會稍微增加資料存取時的 latency
EFS
服務特色
managed NFS,用在 Linux-based EC2 instance 上,可讓超過 100 個 EC2 instance 同時存取
multi-AZ 的設計,高可用,但價格是 EBS volume gp2 的三倍價格
使用 NFS v4.1 協定
存取權限除了 NFS 服務本身提供的之外,也可以透過 security group 來管理
搭配 KMS 可作到 encrption at rest
EFS 提供了
Storage Tiers
的機制,可以指定檔案多少天內沒有被存取,就從Standard
自動轉到EFS-IA(Infrequnt Access)
以取得更便宜的使用價格
效能相關選項
Performance Mode:有
General Purpose
(適用於 web server、CMS … 等服務) &Max I/O
(適用於 big data、media processing …等服務) 可選Throughput Mode:有
Bursting
(1 TB = 50 MiB/s,最大 100 MiB/s) &Provisioned
可選
Access Points
若要作到更細膩的 EFS 存取控制,那就需要了解 Access Points 這個功能,可提供的功能如下:
可以限定存取 EFS 時所使用的 POSIX user & group
可限定存取的是某一個目錄作為 client 的 root directory
可以使用 IAM policy 用來限制存取 EFS 服務的 client 端
其他注意事項
在 EFS 中,有些設定可以直接進行變更,但有些不行,舉例來說,以下設定可以直接進行變更:
調整 lifecycle policy
調整 throughput mode & 調整 provisioned throughput 的上限
access points
但有些設定則無法直接變更,例如:
將資料移到設定加密的 EFS 設定中
調整 Performance Mode (例如:general purpose -> Max I/O)
上面這兩個操作,就需要新建立一個 EFS 設定,並搭配 DataSync 服務來完成。