【每周快報】1021-1027 AWS 服務更新
前言
每年十月底開始 AWS 的服務更新與發佈會開始逐漸減少,為十二月的 AWS re:Invent 做點鋪陳準備。然而,AWS 近期仍發布了些服務,包含可以幫助使用者選擇適合的 AZ 的 Amazon EC2 Spot placement score,還有可以幫助使用者簡短開發周期的 AWS SAM Accelerate。
除了這兩項重要服務的推出外,AWS 還針對 Amazon Textract、Amazon SageMaker Autopilot、Route 53 Resolver…等服務,做了許多更新與改動。
焦點新聞
Amazon EC2 Spot placement score 正式發佈
使用者在 AWS 上建立服務時,基本上都是根據 pay-as-you-go 的概念進行,也就是說使用者用了多少服務,用了多少時間,就會反應在價格上面,並不會收取你沒有使用的費用。
但由於現實生活中的使用場景眾多,AWS 也再思考如何去制定更多元的計價模式給使用者選擇,或是根據使用者的需求來混搭不同的計價模式達到最好的成本管控,也是許多使用者在意的事情。
Amazon EC2 提供了許多不同的計價模式和類型供使用者使用,例如使用者可以透過競標的方式去爭取 Spot Instance 的使用,不僅可以節省將近 90% 的費用(對比 on-demand),也適合在需要大量運算資源 High Performance Computing (HPC)、大數據等使用場景,提供了更彈性的選擇。
但是在提供 Spot Instance 的背後潛藏了許多不穩定的因素,因為每個地區提供出多餘機器的容量會隨著時間持續的改變,換句話說,你無法確切地得知何時你可能會被通知 Spot Instance 將會被收回,亦或是你在這個地區的 Spot Instance 穩不穩定。
此次更新後, Amazon EC2 Spot placement score 可以幫助使用者更快速的去部署 Spot Instance,必且根據你的使用量和機器大小來推薦你最佳的 regions 和 Availability Zones。
就讓我們來實際操作一下吧!
首先登入到 AWS Console 介面,並且選取 EC2 服務,在左側欄位選擇 Spot Requests
。
點擊右上角的 Spot placement score
按鈕,就會有相關的視窗資訊跑出來。
接著我們點擊 Enter requirements
輸入我們將會使用的目標容量、機器類型、機器數量、vCPU 使用量和記憶體使用量等。
而在機器類型的需求介面,有兩種方式能夠選擇:
* Specify instance attributes that match your compute requirements:
可以根據你的運算需求輸入你需要多少 vCPU,記憶體,和 CPU 的架構等。
* Manually select instance types:
使用這個方法時,你必須選擇至少三個不同的系列的 instance 種類。
讓我們用以上的需求去計算出分數,會得到以下的結果,讓使用者更快速地選擇適合的區域。
參考來源至:Introducing Amazon EC2 Spot placement score
圖片來源至:Identifying optimal locations for flexible workloads with Spot placement score
AWS SAM Accelerate 發表預覽版
SAM 是 serverless 應用程式框架中非常重要的一個工具,它可以自動化部署大量的 serverless 服務在 AWS 環境中,但讓開發者為之詬病的地方就是每次在 local 改完 template 之後,都要重新部署一次才有辦法知道結果,這個重新部署的步驟往往就會花費許多時間,導致開發的生命週期會被拉的很長。
有鑑於此,SAM Accelerate 就是為了解決這個痛點所推出的新功能,在最新版的 SAM CLI (>=1.34.1
)中新增了一項指令 sam sync
,這項指令可以快速地將地端 template 所有的更動快速的更新至雲端的環境中。
“`bash=
$ sam sync –stack-name demo-project
Initiating deployment
2021-10-28 17:05:18 – Waiting for stack create/update to complete
CloudFormation events from stack operations
ResourceStatus ResourceType LogicalResourceId ResourceStatusReason
CREATE_IN_PROGRESS AWS::CloudFormation::Stack demo-project Transformation succeeded
CREATE_IN_PROGRESS AWS::IAM::Role GreetingFunctionRole –
CREATE_IN_PROGRESS AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNested –
Stack
CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole –
CREATE_IN_PROGRESS AWS::IAM::Role GreetingFunctionRole Resource creation Initiated
CREATE_IN_PROGRESS AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNested Resource creation Initiated
Stack
CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole Resource creation Initiated
CREATE_COMPLETE AWS::IAM::Role HelloWorldFunctionRole –
CREATE_COMPLETE AWS::IAM::Role GreetingFunctionRole –
CREATE_COMPLETE AWS::CloudFormation::Stack AwsSamAutoDependencyLayerNested –
Stack
CREATE_IN_PROGRESS AWS::Lambda::Function GreetingFunction –
CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction –
CREATE_COMPLETE AWS::Lambda::Function GreetingFunction –
CREATE_IN_PROGRESS AWS::Lambda::Function GreetingFunction Resource creation Initiated
CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction Resource creation Initiated
CREATE_COMPLETE AWS::Lambda::Function HelloWorldFunction –
CREATE_IN_PROGRESS AWS::ApiGateway::RestApi BaseApi –
CREATE_IN_PROGRESS AWS::ApiGateway::RestApi BaseApi Resource creation Initiated
CREATE_COMPLETE AWS::ApiGateway::RestApi BaseApi –
CREATE_IN_PROGRESS AWS::ApiGateway::Deployment BaseApiDeploymentda37659d25 –
CREATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPer –
missionProd
CREATE_IN_PROGRESS AWS::Lambda::Permission GreetingFunctionGreetingPermiss Resource creation Initiated
ionProd
CREATE_IN_PROGRESS AWS::ApiGateway::Deployment BaseApiDeploymentda37659d25 Resource creation Initiated
CREATE_IN_PROGRESS AWS::Lambda::Permission GreetingFunctionGreetingPermiss –
ionProd
CREATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPer Resource creation Initiated
missionProd
CREATE_COMPLETE AWS::ApiGateway::Deployment BaseApiDeploymentda37659d25 –
CREATE_IN_PROGRESS AWS::ApiGateway::Stage BaseApiProdStage –
CREATE_IN_PROGRESS AWS::ApiGateway::Stage BaseApiProdStage Resource creation Initiated
CREATE_COMPLETE AWS::ApiGateway::Stage BaseApiProdStage –
CREATE_COMPLETE AWS::Lambda::Permission GreetingFunctionGreetingPermiss –
ionProd
CREATE_COMPLETE AWS::Lambda::Permission HelloWorldFunctionHelloWorldPer –
missionProd
CloudFormation outputs from deployed stack
Outputs
Key GreetingApi
Description API Gateway endpoint URL for Prod stage for Greeting function
Value https://0bvm5i5aaf.execute-api.us-west-2.amazonaws.com/Prod/greeting
Key HelloWorldApi
Description API Gateway endpoint URL for Prod stage for Hello World function
Value https://0bvm5i5aaf.execute-api.us-west-2.amazonaws.com/Prod/hello
Stack creation succeeded. Sync infra completed.
{‘StackId’: ‘arn:aws:cloudformation:us-west-2:xxxxxxxxx:stack/demo-project/2c1c8520-37ce-11ec-9d9b-062b9d7e5385’, ‘ResponseMetadata’: {‘RequestId’: ‘f39a9da7-eea6-451d-9ecc-426cbebfa444’, ‘HTTPStatusCode’: 200, ‘HTTPHeaders’: {‘x-amzn-requestid’: ‘f39a9da7-eea6-451d-9ecc-426cbebfa444’, ‘content-type’: ‘text/xml’, ‘content-length’: ‘382’, ‘date’: ‘Thu, 28 Oct 2021 09:05:18 GMT’}, ‘RetryAttempts’: 0}}
“`
這個指令有支援幾個比較重要的 optional flag:
--code
: 此次更動只限定 Lambda 相關資源--code --resource
: 透過 resource type 來限定更動的範圍(ex: AWS::Serverless::Function)--code --resource-id
: 透過 resource id 來限定更動範圍(ex: HelloWorldFunction)
上述這些 flag 對於只有小部分改動的情況實在是非常方便,在 stack 的更新上非常快速,相比以前實在是快很多。
但由於仍然在 Beta 測試,所以仍有些許事項需要注意:
– ASL(Amazon State Language,Step function 的流程定義語言) 目前不支援 DefinitionSubstitutions
的更新。
– API Gateway 的 OpenAPI template 一定要給 DefiitionUri
而且目前不支援 intrinsic functions 和 pseudo parameters
– Lambda 程式碼不支援 inline
方式定義,只能用 S3Uri
參考來源至:Announcing AWS SAM Accelerate – quickly test code changes against the cloud (public preview)
其他服務更新
-
AWS Local Zones 新增拉斯維加斯,紐約,與波特蘭地區 :Local Zone 是一項可幫助降低服務 Latency 的基礎設施,若使用者現在在以上三個地區可以享受更低延遲的體驗。
-
Amazon Textract 支援 TIFF 檔案並且加入非同步處理收據和發票功能: Amazon Textract 是一種機器學習服務,該服務可以透過 OCR 自動從掃描的文件如 PDF 擷取文本或是手寫的資料,現在 Amazon Textract 也支援了 TIFF 檔案,不僅能同步或非同步的處理 TIFF 檔案資料,也能使用 Amazon Textract APIs 做到 DetectDocumentText、StartDocumentAnalysis、StartDocumentTextDetection、AnalyzeDocument、AnalyzeExpense 這些功能。
-
Amazon SageMaker Autopilot 新增支援搜集時間序列數據功能: Amazon SageMaker Autopilot 是一種機器學習的服務,會根據使用者的資料,自動建立、訓練、調整成最適合使用者資料的模型。使用者現在可以根據模型問題種類如:
regression problem
、classification problem
加入時間序列的數據或是任何有序列的數據來建立模型,使用場景如:異常偵測,風險評估,或是故障預測等。 -
Route 53 Resolver 新增能關閉預設反向 DNS 規則功能: Route 53 Resolver 是一個遞迴的 DNS 解析服務,它預設包含在你新增的 VPC 內,且會搭配 Route 53 Resolver Endpoint 以及 Resolver Rules。當使用者在 VPC 設定
enableDnsHostnames
為true
時,Route 53 resolver 都會自動幫你做反向 DNS lookup,可以幫使用者找出向使用者發送請求的域名等,但在過去這個服務在預設是不能被取消的。現在,在此功能釋出之後,使用者能關閉此功能並且是根據將需要反向 DNS 命名空間的查詢再轉發到外部 server。 -
Amazon RDS Custom for Oracle 正式發佈: AWS RDS 提供了 Paas 等級的服務讓使用者無需自己管理資料庫引擎或是建置底層的架構等,但有些企業或使用者有客製化的需求,想要自己建立管理資料庫,或是作業系統,都可以選擇 Amazon RDS Custom 來完成。而現在 Amazon RDS custom 也新增支援 Oracle 的資料庫引擎,讓想要從 Oracle 轉換到 Amazon RDS custom 上更加方便。
-
AWS Fault Injection Simulator 現在支援注入 AWS EC2 Spot Instance: AWS Fault Injection Simulator 是去年 AWS 2020 re:Invent 提出的概念服務,目的在於幫助企業模擬故障情形、混沌工程來避免可能發生的風險及錯誤。而現在這個服務也結合 AWS EC2 Spot Instance,來模擬使用 Spot Instance 可能會發生的故障和當你的 EC2 被 AWS 收回時,你的應用程式會如何回應,用此方法來增進整體服務的彈性。