【每周快報】0826-0901 AWS 服務更新
前言
在八月底,AWS 除了更新許多服務來改善使用者的體驗,還推出了新服務方便使用者管理資源。上週 AWS 正式推出 Amazon Managed Grafana,讓使用者不用去管理硬體設備,可以簡單、專心地操作服務。在服務優化方面,Amazon VPC 新增了更細的路由方式,有助於使用者建立自定義的審核機制。而 AWS CloudFormation 現在可在發生部署失敗時,保留部署成功之資源,僅 Rollback 失敗的資源。
上述焦點新聞外,文中也將分享 AWS Copilot、AWS IoT Device、AWS Database Migration Service…等多項服務的改動。
焦點新聞
AWS CloudFormation 現在可在發生部署失敗時,保留部署成功之資源,僅 Rollback 失敗的資源
AWS CloudFormation 是一個基於 IaC (Infrastructure as Code) 概念去部署 AWS 上資源的服務,其服務好處是可利用一份 Template 來宣告要在 AWS 部署的資源,透過自動化的概念,快速部署雲端架構。
不過,在過去每當 CloudFormation Stack 創建失敗後,就會自動 RollBack 到上一個穩定、可運作的版本;又或是針對第一次部署就失敗的 Stack,將全部的資源都刪除,不論部署成功或失敗。導致每次部署出現錯誤時,都要再重新部署整個 Stack。因此開發者需消耗大量時間在測試、修改 Template,也無法直接從 point of failure 重新部署就好。
舉例來說,使用者原先利用 CloudFormation 去部署十項 AWS 上的資源,在部署期間發現其實只有一項資源沒辦法正式部署,但其它九項都可以。在過去,CloudFormation 會自動連同成功部署好的九項資源一起刪除,但現在 CloudFormation 新增 Preserve successfully provisioned resource
的功能,使用者可以只針對錯誤和無法部署的資源去重新部署即可,其他九項成功部署資源都能夠保留。
- 以此 AWS 官方 Blog 所提供的範本為例,可能因為參數的設定錯誤,會導致 Stack 無法順利部署完成,像是範例中用來部署 Kinesis Stream 的
MyStream
,使用者可能意外給了錯誤的值:0
,就會導致 Stack 部署失敗。
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template to fix & remediate
Parameters:
ShardCountParameter:
Type: Number
Description: The number of shards for the Kinesis stream
Resources:
MyBucket:
Type: AWS::S3::Bucket
MyQueue:
Type: AWS::SQS::Queue
MyStream:
Type: AWS::Kinesis::Stream
Properties:
ShardCount: !Ref ShardCountParameter
MyTable:
Type: AWS::DynamoDB::Table
Properties:
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: "ArtistId"
AttributeType: "S"
- AttributeName: "Concert"
AttributeType: "S"
- AttributeName: "TicketSales"
AttributeType: "S"
KeySchema:
- AttributeName: "ArtistId"
KeyType: "HASH"
- AttributeName: "Concert"
KeyType: "RANGE"
KinesisStreamSpecification:
StreamArn: !GetAtt MyStream.Arn
Outputs:
BucketName:
Value: !Ref MyBucket
Description: The name of my S3 bucket
QueueName:
Value: !GetAtt MyQueue.QueueName
Description: The name of my SQS queue
StreamName:
Value: !Ref MyStream
Description: The name of my Kinesis stream
TableName:
Value: !Ref MyTable
Description: The name of my DynamoDB table
...
- 這時候,使用者可以在創建 Stack 的過程中,設定
Stack failure options
,選擇Preserve successfully provisioned resource
選項。
- 之後在創建的過程當中,如果發生錯誤,Stack 也不會自動 Rollback 回原先狀態了。
使用者可以在
Event
tab 看到哪些資源創建成功
、失敗
或是正在創建
,以及創建失敗的 error message 是什麼。
或是也可以從
Resource
去看到其保留成功創建的資源有哪些。
- 之後,使用者也可以選擇:
- Retry – 重新整理整個 stack,沒有做任何代碼更動
- Update – 改動代碼後,再重新部署一次
- Rollback – 直接 Rollback
透過新功能的 launch 後,使用者能更彈性的去管理自己的 template 部署方式和增加開發效率。
圖片來源至:New for AWS CloudFormation – Quickly Retry Stack Operations from the Point of Failure
Amazon VPC 新增更加細節的路由方式,有助於使用者建立自定義的審核機制
Amazon VPC 是一項可以讓使用者在 AWS 網路環境中,建立邏輯上私有空間的服務。而有許多 AWS 資源會啟用在 VPC 當中,讓使用者可透過路由控管、Security Group 及 Network ACL 的設定,來管理 VPC 內的流量存取。
在 2019 年 12 月,AWS 推出 VPC Ingress Routing,讓使用者可以將 Route Table 套用至 Internet Gateway,藉此路由所有進入 VPC 的流量,可以優先到一張 ENI 上,而這張 ENI 可能是掛在一台 EC2 Instance 上,那流量就會路由至 EC2 Instance。而這台 EC2 Instance 上,可裝載其他第三方的 IDS/IPS 或 Firewall,讓流量在進行自定義的合規、安全性審查後,再去訪問 VPC 中的其他資源。
圖片來源至:New – VPC Ingress Routing – Simplifying Integration of Third-Party Appliances
而後,AWS 又在 2020 年 re:Invent 推出 Gateway Load Balancer,讓使用者可以把進入 VPC 流量,路由至 Gateway Load Balancer,在平均分流給後續在做審查的 EC2 Instances。這項新功能也讓使用者整體的架構更加彈性、安全。
但上述這兩項新功能都是針對整個 VPC 上作用,而這次的改動,則是給使用者在 Subnet 層級上,做更細部的路由規則設定。
在過去,如果是 VPC 內的溝通時,都是直接套用 local
的路由規則,只要 Security Group 及 Network ACL 沒有阻擋,Subnet 與 Subnet 之間溝通是暢行無阻。現在,使用者可以在 Route Table 中,指定 Subnet 的 CIDR 作為 Destination、ENI 為 Route Target,讓 Subnet 之間的溝通,需要先經過另一台 EC2 Instance 的審核通過,才可以確實的訪問彼此。
圖片來源至:Amazon VPC Routing Enhancements Allow You to Inspect Traffic Between Subnets In a VPC
要實現上圖的設定,使用者只需要進行兩件事:
- 修改圖中 Public Subnet 的 Route Table,新增 Private Subnet 的 CIDR 網段的路由至位在另外一個 Private Subnet 的 Appliance Instance。
- 反向的,也修改 Private Subnet 的 Route Table,同樣新增 Public Subnet 的 CIDR 網段的路由至 Appliance Instance,就會完成設定了!
如此一來,使用者也可以針對 VPC 內部的流量去進行檢查,讓整體組織、團體共同定義的稽核、安全性考量更加確實的實施。
Amazon CloudWatch Dashboards 支援客製化 Widgets 功能
Amazon CloudWatch 一直以來在 AWS 扮演監控資源的角色,不過隨著組織規模擴大,以及在 AWS 上部署資源眾多,要做到集中管理資源甚至使用視覺化的 Dashboard 來做監控極具挑戰。
現在 AWS 提供客製化的 Widget,讓使用者可以在 CloudWatch Dashboard 上並排顯示來自不同來源的相關數據,custom widgets 可以幫助使用者關聯一段時間內的趨勢並更快速輕鬆地發現問題。使用者可以透過向 Dashboard 增添按鈕來更快地對潛在問題做出反應或採取其他補救措施。
而此項服務更新,不僅只有提供簡單的線圖來呈現,另外還提供更符合商業需求的視覺化 Dashboard 體驗。
目前官方有提供 custom widgets sample library 可以讓使用者選擇範本模板。
在此我們選擇 AWS EC2 Table
範例,來監控 EC2 CPU 使用量,甚至有 Reboot
的 button
可以去做補救的動作。
範本會利用 Cloudformation 部署,完成後可以到 CloudWatch Dashboard 找到創建好的 Dashboard。
除了使用範本外,現在也可以在 Dashboard 上選擇 Custom widget
來設置自己的 widget,算是一個讓使用者可以自定義監控儀表板的小功能!
Amazon Managed Grafana 正式發布
Grafana 是開源監控技術,提供用使用者創建 Dashboard,來監控應用程式的狀態,Grafana 可整合串連多個開源、雲端和第三方資料源的資料。
AWS 在今天正式推出 Amazon Managed Grafana(AMG)服務!使用者不需要去管理伺服器,Amazon Managed Grafana(AMG)會負責 Grafana 的硬體配置、版本及 Patch 更新,讓使用者可以更簡單、專注操作 Grafana!
現在開始可以在 Amazon Managed Grafana(AMG)創建 Workspaces,作為集中查詢資料源的位置。
目前 AMG 支援兩種授權方式 — AWS Single Sign-On (AWS SSO) 及 Security Assertion Markup Language (SAML),可以依據需求選擇適合的作法。
可以選擇資料來源是來自目前使用的 Account 或是 Organization,他會列出可以 Import 的資料的 AWS 服務,如果勾選它,會建立所需要的 IAM Role,讓 AMG 有權限可以去存取資料。
配置完成後,即可透過 URL 存取 Grafana,除了可以查詢 AWS 服務資料,使用者還能透過 JSON Plugin 查詢 Redis、SAP HANA 和 Salesforce ⋯等外部資料源。開發設置 Grafana 除了透過控制台的方式以外,也能透過呼叫 API 或是透過 Terraform 來配置資料源和儀表板,提供給使用者更大的彈性。
且可以透過 AWS CloudTrail 做監控,可以記錄用戶、角色和 AWS 服務對 AMG 的操作,並且稽核 AMG Workspaces 中的變更,提高安全性。
參考來源至:AWS announces General Availability of Amazon Managed Grafana with SAML 2.0 and Grafana v8.0 features
參考來源至:Amazon Managed Grafana Is Now Generally Available with Many New Features
其他服務更新
-
AWS Copilot now supports Pub/Sub architectures:AWS Copilot 是能透過 CLI 的方式將 AWS ECS 服務部署起來的功能,現在也能透過 Copilot 的方式打造出 Pub/Sub Architecture,而此架構是可以用來做到解耦合服務並且以非同步方式處理事件,為此增加服務效能、彈性、和擴展性。讓開發者能簡單透過 CLI 方式打造出以上服務架構。
-
Introducing Dynamic Partitioning in Amazon Kinesis Data Firehose:此功能的釋出,可以透過 key 的概念如
customer_id
,transaction_id
持續去 partition stream data,減少需要掃描大量 data 的步驟。 -
AWS IoT Device Management announces new fleet monitoring enhancements:此新功能讓使用者能夠隨著時間的推移更好地監控其 fleet 的特徵、診斷連接問題並使用 fleet metrics 將數據整合到 cloudwatch 做監控。
-
AWS Database Migration Service 新增支援 Redis 為資料搬遷的目的地:AWS DMS 是一項可幫助搬遷資料庫的服務。現在新增支援以 Redis 為資料搬遷的目標,包含 Redis、Amazon ElastiCache for Redis 以及 Amazon MemoryDB for Redis 都可以作為搬遷的目標(目的地)。
-
Amazon VPC 新增支援調整 Prefix List 的大小:Amazon VPC Prefix List 是一個可用來統整多個 CIDR 網段的表單,可用在使用者管理 VPC 內部網路流量安全設定時,作為 Source 來套用。但以往 Prefix List 的大小,會在創建時就需要先指定;此次更新後,使用者可在創建過後去調整其大小。
-
Amazon Rekognition 加強了 Celebrity Recognition 的準確度,同時新增三項額外的辨識特質,分別為:性別、表情、微笑。透過新辨識三個特質,使用者可以藉此更精準找到自己目標的圖片,例如:僅搜尋演員有微笑的照片;平衡照片中,名人的性別比…等等。
-
Amazon Transcribe 多新增支援六個語言:Amazon Transcribe 是一個語音轉文字的服務。現在 Amazon Transcribe 也支援可以辨識南非荷蘭語、丹麥語、繁體中文(臺灣)、泰語、紐西蘭英語和南非英語,讓轉譯成文字的時候,會更加精準。