【每周快報】0507-0513 AWS 服務更新
前言
AWS 這周為容器使用者推出了 CDK for Kubernetes (cdk8s)!以往 Kubernetes 需要透過大量的 YAML 來制定應用程式所使用的資源,現在使用者可以透過 cdk8s ,以程式語言等來定義 Kubernetes 應用程式,進而跳脫出 YAML 的框架。另外 AWS 還推出了 Amazon Kendra,這是專為企業所推出的搜尋服務,可以幫助使用者快速找到匹配的索引文件,AWS 預計在年底會支援更多的第三方服務!上述服務外,AWS 也對其他領域的服務做了些更新。包含了 AWS Trusted Advisor 現在增加 5 項成本優化檢查、EC2 Image Builder 現在支援 AWS CloudFormation、Amazon CodeGuru、Amazon DMS…等各種領域都有了些改善。
一、焦點新聞
AWS 現在推出 CDK for Kubernetes (cdk8s)
在 CNCF Webinar 對 CNCF community 分享之後,AWS 也宣布 CDK for Kubernetes 正式進入 Alpha 階段!
Kubernetes 需要透過大量的 YAML 來制定應用程式所使用的資源,例如:如何啟用應用程式?使用多少的 IT 資源?或是 Container 部署的方式、應用程式中 config file 的參數…等設定。隨著應用程式功能的擴大以及開發人員的變換,使用者需花費大量的時間來修改 / 複製 / 維護 YAML 檔案。
現在使用者可以透過 cdk8s 以程式語言如 Python、Typescript…等來定義 Kubernetes 應用程式,進而跳脫出 YAML 的框架。
CDK for Kubernetes (cdk8s) 具有以下特性:
- 適用於任何 Kubernetes platform:不論使用者是使用哪一種 cloud 或是 on-premise 的環境來開發 Kubernetes,都可以使用 cdk8s。
- 以簡潔宣告的方式定義應用程式:使用者利用 imperative languages 來定義 cdk8s,並由 cdk8s 生成 YAML,進而簡化使用者需要自行撰寫 YAML 的過程。
- 支援通用的程式語言:cdk8s 目前支援 TypeScript、JavaScript 和 Python 來定義應用程序,未來將會加入 Golang、.NET。
- 開源:cdk8s 是開源專案,當你有發現 issues 或是有想要投入功能開發,都歡迎提出 PR!
- 支援任何版本的 Kubernetes APIs 或自定義的資源:使用者可引入任何版本的 Kubernetes APIs,也可隨時更新或自定義需要的 APIs。
以下為以 L1 方式宣告 SPEC
label = {"app": "hello-k8s-podinfo"}
k8s.Service(self, 'service',
spec=k8s.ServiceSpec(
type='LoadBalancer',
ports=[k8s.ServicePort(port=80, target_port=k8s.IntOrString.from_number(9898))],
selector=label
)
)
k8s.Deployment(self, 'deployment',
spec=k8s.DeploymentSpec(
replicas=2,
selector=k8s.LabelSelector(match_labels=label),
template=k8s.PodTemplateSpec(
metadata=k8s.ObjectMeta(labels=label),
spec=k8s.PodSpec(containers=[
k8s.Container(
name='podinfo',
image='stefanprodan/podinfo',
ports=[k8s.ContainerPort(container_port=9898)]
)
])
)
)
)
以下為以 L2/3 方式宣告 SPEC,以 Construct 的方式一個包一個去實現
DeboredApp(self, 'podinfo',
image='stefanprodan/podinfo',
container_port=9898,
default_replicas=2,
ingress=IngressType.SERVICE_LOADBALANCER
)
編寫後可以執行 cdk8s synth
會輸出 YAML 檔至當前目錄:
$ cdk8s synth
dist/sample.k8s.yaml
apiVersion: v1
kind: Service
metadata:
name: sample-service-6e53cfe1
spec:
ports:
- port: 80
targetPort: 9898
selector:
app: hello-k8s-podinfo
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-deployment-a16265f2
spec:
replicas: 2
selector:
matchLabels:
app: hello-k8s-podinfo
template:
metadata:
labels:
app: hello-k8s-podinfo
spec:
containers:
- image: stefanprodan/podinfo
name: podinfo
ports:
- containerPort: 9898
大幅地減輕編寫 YAML 的 workload,以 cdk8s 可以用語言的方式去管理、去宣告要部署什麼應用到 K8S Cluster 當中!cdk8s roadmap 也有相關未來開發走向,大家可以持續關注!
Amazon Kendra 正式 GA
Kendra 是 AWS 所推出的企業搜尋服務,相信大家一定都曾經發生過明明想找某個檔案,也知道那個檔案就放在這個儲存空間的某處,卻始終找不到或是花太多的時間,Kendra 就是用來解決此問題的服務。
Kendra 透過建立索引(index)的方式並搭配機器學習,迅速幫助使用者找到匹配的索引文件,先前在 preview 的時候只與 S3、RDS 和 Sharepoint 整合,現在則新增了 Salesforce、Servicenow 和 OneDrive 以滿足更多企業客戶的需求,而 AWS 也預計在年底支援更多的第三方服務!
除了服務功能面的更新外,還推出了開發者版本(Developer Edition),限制為 4,000 個查詢,並只能在 5 個 data source 中最多搜尋 1 萬個檔案,少了企業版(Enterprise Edition)中可擴展 index 查詢用量的選項,而且只部署在單個可用區(AZ)上,所以不建議作為生產環境使用。雖然功能上有些差異,但與企業版的使用費價差近三倍,大幅降低使用者在開發、測試的成本!
目前 Amazon Kendra 可在 US East(N. Virginia)、US West(Oregon)以及 Europe(Ireland)等區域中使用。
AWS EC2 提供新的 Instance Type
EC2 提供許多的 Instance Type,如果想加強運算能力、記憶體強化、儲存優化或一般用途等,可以從中選擇適合的 Instance Type。
此次更新後,新增採用 Arm 型 AWS Graviton 2 處理器的 Amazon EC2 M6g Instance Type,在價格、效能上優於新 x86 型的 Amazon EC2 M5 Instance Type,適合用在應用程式服務器、微服務、遊戲伺服器、中小型資料庫及快取服務。
以下整理 M6g Instance Type 特點:
- 採用 AWS Graviton 2 處理器-採用 64 位元 Arm Neoverse 核心,效能和容量都大幅超越第一代 AWS Graviton 處理器,提供 7 倍的處理效能、 4 倍的運算核心數、 2 倍的快取空間,以及 5 倍處理速度的記憶體。相較於第一代 AWS Graviton 處理器,AWS Graviton 2 處理器具備常態性 256 位元 DRAM 加密和快 50% 的核心加解密效能。
- Amazon EC2 M6g Instance 建立在 AWS Nitro System上-提供高效率、彈性及安全的雲端服務,具備獨立的租用模式、私有網路,以及快速地本機儲存。這些執行個體最高支援 19 Gbps Elastic Block Store (EBS) 頻寬及最高 25 Gbps 網路頻寬。
更多詳細訊息,可參照 AWS Instance Types。
參考來源至:Amazon EC2 M6g instances powered by AWS Graviton2 processors are now generally available
二、其他服務更新
AWS Single Sign On (SSO) 支援零停機時間更新 x.509 證書
為了要確認 IdP (身份提供商) 及服務提供商之間共享訊息的真實性及完整性,會使用 x.509 證書作為確認的媒介,但證書可能因為過期、意外遭到盜用等原因,必須要定期更新 x.509 證書,確保使用者可以利用 SAML 的 SSO 登入應用程式。
以往 IdP 更新證書時,可能會出現停機時間,中斷身份驗證服務,此次更新後,可以直接更新證書,且不會出現服務停機時間!讓管理人員更加容易、順暢執行,亦不影響使用者體驗。
參考來源至:AWS Single Sign-On supports zero-downtime external IdP certificate rotation
AWS Trusted Advisor 增加 5 項成本優化檢查
AWS Trusted Advisor 是針對成本優化、性能、安全性、容錯能力及服務限制等面向,提供即時最佳實務的建議,此次更新新增以下 5 個成本優化的檢查項目:
- Saving Plan: 檢查使用者對 EC2、Fargate 及 Lambda 等使用狀況,提供 Saving Plan 的購買建議,讓使用者可以選擇更多划算的購買選項。
- Amazon ElastiCache Reserved Node: 根據 ElastiCache 的使用情況,提供 Reserved Node 建議。
- Amazon RedShift Reserved Node: 根據 RedShift 的使用情況,提供 Reserved Node 建議。
- Amazon Elasticsearch 預買 Instance: 根據 Elasticsearch 的使用情況,提供 RI Instance 的建議。
- Amazon Relational Database Service(RDS) 根據 RDS 的使用情況,提供 RI DB Instance 的建議。
Saving Plan、Reserved Insatnce (RI) 和 Reserved Node 皆為透過一年或三年期的約定折扣方式,向 AWS 擔保預留資源,有需要時一定取用得到預留資源啟用相關服務,如 EC2、RDS、Fatgate、Lambda、ElastiCache、ElasticSearch…等,根據選定服務、資源用量及約定時長會有不同的折扣,比起 On-Demand 隨需價格,提供約 50% ~ 75% 折扣的優惠。
AWS Trusted Advisor 會依據 AWS Support Plan 級別不同而提供廣度不同的項目改善建議,本次更新需要 Business 或是 Enterprise 級別。
EC2 Image Builder 現在支援 AWS CloudFormation
此次更新後,使用者可以利用 CloudFormation Template 部署 EC2 Image Builder。當需要更新 EC2 Image Builder 時,不在需要手動使用 EC2 Image Builder console、CLI,或 APIs 來操作,而是可以透過 CloudFormation 自動化修正即部署。
參考來源至:EC2 Image Builder now includes support for AWS CloudFormation
AWS Direct Connect 現在支援監控 virtual interfaces (VIFs) 的 CloudWatch Metrics
以往使用 Direct Connect 的使用者只能看到 Direct Connect Dedicated connections 的連線狀態、流量輸送量。此次更新後,使用者現在可透過 CloudWatch Metrics 來檢視每個 VIFs 的流量狀態。例如:可以監控進出此 VIF 的 bitrate,或是封包進出的速率等等,幫助使用者得到更多資訊。
參考來源至:Enhanced monitoring capabilities for AWS Direct Connect
Amazon EC2 推出兩項更新
Amazon EC2 High Memory Instance 支援更高用於 EBS 儲存的網路頻寬
此次更新後,具有 6 TB 以上記憶體的 Amazon EC2 High Memory Instance 將提供 38 Gbps 的專用儲存頻寬及額外的 100 Gbps 網路頻寬,相當於提升高達 2 倍的儲存頻寬。而 6 TB、9 TB 及 12 TB Instance 更是提升高達 4 倍的網路頻寬。使用者可藉此提升 Insatnce 運行的效率,同時加快應用程式的備份和還原流程。
Amazon EC2 High Memory Instance 現在可購買 1 年期的 Reserved Instances
原先 EC2 EC2 High Memory Instance 僅提供的 3 年保留購買選項,此次更新後,使用者也可以購買 1 年期保留購買選項,讓使用者在 EC2 Instance 使用和採購方面將有更大的彈性。
Amazon CodeGuru 推出兩項更新
Amazon CodeGuru 是 AWS 推出自動執行程式碼審查並提供應用程式效能建議的服務。藉由找到耗費資源的程式碼,改善應用程式效能。CodeGuru 用 Amazon 程式庫中的數十萬個專案訓練機器學習模型,而程式庫包含成千上萬 Amazon 開發人員在數十年間對程式碼進行審查與應用程式分析的應用程式分析的經驗。
CodeGuru 是 Reviewer 與 Profiler 組成,Reviewer 主要是在審查程式碼階段給予建議,標記可能有問題的法程式碼。而 Profiler 則會透過代理程式在程式的運行,尋找會耗費大量資源的程式法並給予建議。
Amazon CodeGuru Profiler 支援 -javaagent
執行 Profiler
以往,Amazon CodeGuru Profiler 的設定需要在應用程式添加依賴套件或新增程式碼。在這次更新之後,使用者僅需透過指令即可啟動代理程式在應用程式的運行。而不需要再對應用程式重新編譯或修改代碼,也不需將代理程式加入應用程式所編譯成的 jar 中,因此不用擔心與 Amazon SDK 所提供的版本有相容性的問題。
在使用前須設定應用程式權限,然後下載 .jar 檔案並透過以下 -javaagent
的指令執行代理。
-javaagent:AmazonCodeGuruJavaProfiler-1.0.jar=groupName=profiling-group-name
例如:
java -javaagent:AmazonCodeGuruJavaProfiler-1.0.jar = groupName = profiling-group-name -jar MyApplication.jar
參考來源至:Amazon CodeGuru announces -javaagent switch to start Profiler
Amazon CodeGuru Reviewer 支援對 Bitbucket 提供程式碼建議
在這次更新後,Amazon CodeGuru Reviewer 可以透過使用者對 Bitbucket 的 pull/push 請求,對 Bitbucket 中的程式碼進行分析並提供建議。而使用者只需要在使用 CodeGuru Reviewer 時選則 Bitbucket 作為儲存庫,並利用 Bitbucket 的憑證與 AWS CodeStar 連接,即可取得 CodeGuru Reviewer 對 Bitbucket 的 建議。
參考來源至:Amazon CodeGuru Reviewer announces support for Bitbucket repositories and enhancements
Amazon DMS 現在支援在資料轉換的過程中以表達式制定額外的轉換方式
此次更新後,在 Amazon DMS 轉換及複寫資料時,使用者可建立 SQLite 為基礎的表達式,制定複寫過程中需執行的動作,例如:在目標資料表新增一欄用以彙總來自兩個以上來源欄位的資料;或在目標資料表新增一欄來記錄各個欄位更新/刪除的狀態或是更動的時間戳記。
- 範例:以下的 rule 將兩個現有欄位內的值合併,分別為
FIRST_NAME
和LAST_NAME
,合併至名為ITEM
表中的FULL_NAME
欄位。而FULL_NAME
欄位的數據類型為 string,並限制最長 50 個字符。
{
"rules": [
{
"rule-type": "selection",can
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "Test",
"table-name": "%"
},
"rule-action": "include"
},
{
"rule-type": "transformation",
"rule-id": "2",
"rule-name": "2",
"rule-action": "add-column",
"rule-target": "column",
"object-locator": {
"schema-name": "Test",
"table-name": "ITEM"
},
"value": "FULL_NAME",
"expression": "$FIRST_NAME||'_'||$LAST_NAME”,
"data-type": {
"type": "string",
"length": 50
}
}
]
}
更多範例可參考 Amazon DMS Documentation – Replicating Source Table Headers Using Expressions。
參考來源至:AWS Database Migration Service Now Supports Expression-Based Data Transformations
Tag:Amazon CodeGuru, Amazon CodeGuru Profiler, Amazon CodeGuru Reviewer, Amazon DMS, Amazon EC2, Amazon EC2 High Memory Instance, Amazon Kendra, AWS, AWS CloudFormation, AWS Direct Connect, AWS EC2, AWS Single Sign-On, AWS Trusted Advisor, Bitbucket, CDK for Kubernetes, cdk8s, CloudWatch Metrics, EBS, EC2 Image Builder, GA, Instance Type, Profiler, Reserved Instances, SSO, VIFs, virtual interfaces, x.509