【每周快報】0624-0630 AWS 服務更新
前言
隨著許多企業陸續開始使用容器化服務,AWS 也針對容器服務持續增加支援。過往 AWS 專為容器服務推出的 Linux 作業系統 – Bottlerocket AMI 僅支援 AWS EKS, 現在也支援 AWS ECS 了,讓使用者有更多選擇。上週還有另外項特別重要的服務支援新增 – Github Actions 支援部署 AWS SAM。許多開發者會在 Github 上啟動 Github Actions 來啟動第三方服務的應用,有了這項支援後,使用者可以把 SAM Template 寫好後推上 Github,就可以觸發自動化流程,將 template 上傳到 AWS 並且執行,這樣的整合解決了日後程式碼與版本更新的痛點。
上述服務外,文中也將提及 Amazon DynamoDB Accelerator、AWS Glue Schema Registry、AWS Lambda…等,多項服務的新支援。
焦點新聞
Amazon ECS 支援使用 Bottlerocket AMI
現今越來越多企業與客戶看準容器輕便、精簡的特性,逐漸擁抱容器化服務,以提高 workload 的資源效率。以往使用 AWS ECS Task Definition 去定義配置容器的腳本,如果 Instance 層級需要做到版本更新或是修補一些資安漏洞,除了對原本在運行的容器都會造成一些中斷和時間成本問題,也會占用磁碟空間和 CPU 運算資源,增加啟動的時間。
而 BottleRocket 是 AWS 所推出一個基於 Linux-Based 專門為容器而生的系統,只要預先在 Bottlerocket 準備好要執行的軟體,每當有服務需要更新時,只需單獨更新 Bottlerocket AMI 鏡像檔載入要執行 EC2 Instance 中,且 ECS 也會自動更新 Bottlerocket,改善上述所遇到可用性問題,和更新服務中斷的流程。
而原本 Bottlerocket AMI 僅支援 AWS EKS,今天你也支援在 AWS ECS 上選擇使用 Bottlerocket AMI 了,根據不同容器化的服務提供 support,顧客也能根據使用場景選擇適合自己的容器化服務。
參考來源至:The Bottlerocket AMI for Amazon ECS is now Generally Available
圖片來源至:AWS Bottlerocket
Github Actions 支援部署 AWS SAM
對於現今的開發者來說,CI/CD 的概念以及實踐再重要不過了,你可以在 Github 上面啟動 Github Actions 自動將原本建置在 Github 的程式碼寫成 .yml or .yaml 檔案來去啟動第三方服務的應用。
而為了更方便開發者打造 serverless 的服務應用,每當將程式碼上傳至你的 Github repo 時,Github Actions Workflow 就會觸發 Github CI/CD pipeline 直接與你自己的 AWS Account 對接來做到 SAM (Serverless Application Model) 的應用。
那我們就來實作一下吧!
首先,必須在你的電腦下載 AWS Command Line Interface (CLI) 與 AWS SAM CLI(更新到最新的版本),和預先建置好自己的 S3 Bucket 來存放未來會使用到的 package 。
打開 terminal 之後,可透過 SAM CLI 先 init 一個簡單的 demo 到自己的 Github repo,指令如下:
sam init -r python3.8 -n <your-repo-name> --app-template "hello-world"
之後我們就會有一個簡單的檔案和路徑可以查找,下一步必須到 .github/workflows
底下去建立 pipeline.yml 檔案,才會被觸發並且執行到 AWS 上。
SAM-Pipeline.yml 參考範本:
on:
push:
branches:
- main
jobs:
build-deploy:
runs-on: ubuntu-latest #跑在哪個作業系統
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: aws-actions/setup-sam@v1
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: #自己設定好你要的區域
# sam build
- run: sam build --use-container
# Run Unit tests- Specify unit tests here
# sam deploy
- run: sam deploy --no-confirm-changeset --no-fail-on-empty-changeset --stack-name sam-hello-world --s3-bucket ##s3-bucket## --capabilities CAPABILITY_IAM --region ##region##
而當我們上傳程式碼到 repo 時,整個 workflow 會以 event-driven 的模式去啟動後續的相關動作。
如我們將 push code 到 repo 視為一個事件:
git add .
git commit -am "Add AWS SAM files"
git push
你可以在 Github Actions 看到部署的進度,以便追蹤。
對於開發者來說想要直接透過 Github Actions 做到與 AWS SAM 整合的功能,解決日後程式碼與版本更新的痛點!
參考來源至:Configure GitHub Actions workflows with a new GitHub Action for building serverless applications
圖片來源至:Using GitHub Actions to deploy serverless applications
其他服務更新
-
Amazon DynamoDB Accelerator (DAX) 新增支援資料在應用程式與 DAX clusters 之間傳輸時,進行加密
-
AWS 宣布 AWS BugBust 計畫:AWS 舉辦面向 Python 和 Java Developers 的抓蟲挑戰,AWS提供近百萬個bug資源,挑戰者使用 AWS CodeGuru Reviewer,檢測 Java 和 Python 應用程式中,難以發現的缺陷和臭蟲。
-
AWS Glue Schema Registry 支援 JSON Schema :當你在使用 Amazon Managed Streaming for Apache Kafka (Amazon MSK)、Amazon Kinesis Data Streams、Amazon Kinesis Data Analytics for Apache Flink 或是 AWS Lambda時,就可以取用在存在 AWS Glue Schema Registry 裡定義好的 Schema。
-
AWS Lambda 針對 Apache Kafka 支援 SASL/PLAIN authentication for functions triggered from self-managed Apache Kafka SASL/PLAIN:SASL/PLAIN 是一種簡單的 username/password 認證機制, 通常與 TLS 加密一起使用, 用於實現安全認證,Kafka 提供了一個預設的 SASL/PLAIN 實現, 可以做擴充套件後在生產環境使用,而現在 Lambda 也支援此驗證機制。