Amazon Elastic Container Service (ECS) 讓您能在各種 Amazon EC2 執行個體的叢集間輕鬆執行與管理已啟用 Docker 的應用程式。在本地封裝為容器的應用程式將以與 Amazon ECS 所管理的容器相同的方式部署和運行。您無須安裝、操作與擴展自有的叢集管理基礎設施,因為 Amazon ECS 可讓您依資源與可用性的需求,在各叢集中安排已啟用 Docker 的應用程式時程。Amazon ECS 讓您可跨數百個執行個體,從單一容器發展成數千個容器,卻不會讓執行應用程式的方式變得更複雜。您可以執行任何項目:無論是應用程式、批次任務或微型服務。Amazon ECS 能讓複雜的基礎設施變得簡單,因此您可以專注在設計、建構與執行容器化的應用程式。

透過 Amazon ECS,您可以獲得對叢集的完全可見性和掌控,包括建立與終止 Docker 容器以及查看叢集狀態的詳細資訊。您可以整合並使用自有的容器排程器,或將 Elastic Container Service 連接至現有的軟體交付程序 (例如,持續整合與交付系統)。

Amazon Elastic Container Service

開始使用

獲得 12 個月的 AWS 免費用量方案,同時享受 AWS 的基本支援功能,包括全年無休的客戶服務、支援論壇等等。

AmazonEC2ContainerService_ProductDetail

Amazon Elastic Container Service 支援 Docker,並讓您能夠在 Amazon EC2 執行個體叢集中執行和管理 Docker 容器。Amazon ECS 在叢集中管理的每個 EC2 執行個體都會執行 Docker 協助程式,因此您在本地封裝成容器的每個應用程式都將在 Amazon ECS 上部署與執行,不需要變更任何設定。

想要管理自有的容器管理基礎設施通常會涉及安裝、操作及擴展您自有的叢集管理軟體、設定管理系統以及監控解決方案。架構和管理這些系統的可用性與可擴展性很困難。而 Amazon Elastic Container Service 能夠讓複雜的容器管理變簡單。透過 Amazon ECS,您只需啟動容器執行個體的叢集,並指定要執行的任務即可;Amazon ECS 會為您包辦所有的叢集管理工作。

Amazon Elastic Container Service 讓您能夠透過稱為「任務定義」的宣告式 JSON 範本來定義任務。您可以在任務定義中指定任務所需的一或多個容器,包括 Docker 儲存庫與影像、記憶體與 CPU 需求、共用的資料磁碟區以及容器互相連結的方式。您可以透過與該服務註冊的單一任務定義檔案啟動任意數量的任務。任務定義檔案也讓您能夠控制應用程式規格的版本。

Amazon Elastic Container Service 包含可讓您根據資源需求 (例如,CPU 或 RAM) 與可用性需求,將容器置於各叢集的排程器。您可以透過可用的排程器,為長時間執行的應用程式、服務以及批次任務安排時程。Amazon ECS API 還為您提供完整的叢集狀態資訊,讓您能夠編寫自有的排程器或整合現有的第三方排程器 (例如,Marathon)。Amazon ECS 是一個共享狀態的開放式並行系統,會向所有的排程器提供完整的叢集狀態。您可以使用 Amazon ECS API 或 Blox (用於容器管理和協調的開放原始碼專案集合) 來開發自己的排程器或是整合第三方排程器。請參閱 Blox GitHub 頁面以進一步了解。

容器自動復原
Amazon ECS 服務排程器會自動復原運作狀態不佳的容器,以確保您擁有所需數量的容器來支援應用程式

容器部署
Amazon ECS 讓您能夠輕鬆將容器更新至新版本。您可以上傳應用程式任務定義的新版本,而 Amazon ECS 排程器會自動啟動要使用已更新映像的新容器,並停止執行舊版本的容器。Amazon ECS 將自動從關聯的 ELB 中註冊和取消註冊您的容器。

Amazon Elastic Container Service 提供一套簡易的 API 來整合和擴展服務。這些 API 可讓您建立和刪除叢集、註冊與取消註冊任務,以及啟動和終止 Docker 容器,還可以提供關於叢集及其執行個體狀態的詳細資訊。您也可以使用 AWS CloudFormation 佈建 Amazon ECS 叢集、註冊任務定義以及排定容器。

Amazon Elastic Container Service 支援 Docker 聯網且與 Amazon VPC 整合,可提供容器隔離。這可讓您控制容器與其他服務和外部流量連接的方式。Amazon ECS 提供四種可滿足不同使用案例需求的容器聯網模式讓您從中選擇:
 
  • Task Networking/awsvpc – 此模式為每個執行中 ECS 任務指派專用的彈性聯網界面,允許 VPC 中的容器完整聯網功能,就和 EC2 執行個體一樣。
  • Bridge – 此模式會建立 Linux 橋接以連接在本機虛擬網路主機上執行的所有容器,其可透過主機的預設網路連線存取。
  • Host – 此模式直接將容器新增到主機的網路堆疊,在主機的網路上公開容器,沒有隔離。
  • None – 此模式會停用容器的外部聯網。

Amazon Elastic Container Service 已與 Elastic Load Balancing (ELB) 整合,讓您能夠將流量分散至各個容器。您只需指定要使用的任務定義與 ELB,Amazon ECS 服務排程器就會自動從 ELB 新增和移除容器。您可以在任務定義中指定動態連接埠,這麼做可為 EC2 執行個體上排程的容器提供一個未使用的連接埠。您也可以使用以路徑為基礎的路由,與多個服務共用 ELB。

Amazon Elastic Container Service 可搭配任何第三方或可存取的私有 Docker 登錄檔或 Docker Hub (一種託管的 Docker 影像儲存庫) 使用。您只需在任務定義中指定儲存庫,Amazon ECS 就會替應用程式擷取適合的映像。

您可以傳送每個容器執行個體的 ECS 代理器日誌與 Docker 容器日誌到 Amazon CloudWatch Logs,以簡化問題診斷。也可以記錄所有的 Amazon ECS API 呼叫,並透過 AWS CloudTrail 將日誌檔案交付給您。所記錄的資訊包括 API 發起人的身分、API 呼叫的時間、API 發起人的來源 IP 地址、請求參數以及 Amazon ECS 傳回的回應元素。CloudTrail 可為您提供透過 Amazon ECS 管理主控台、AWS 開發套件及 AWS CLI 所做的 API 呼叫歷史記錄,還能啟用安全分析、資源變更追蹤以及合規稽核。

Amazon Elastic Container Service 可為您的容器和叢集提供監控功能。您可以透過 Amazon CloudWatch 按照任務定義、服務或叢集的分組來監控所執行任務的平均和彙總 CPU 與記憶體使用率。您也可以設定 CloudWatch 警示在需要擴展或縮小容器或叢集規模時提醒您。

Amazon Elastic Container Service CLI (Amazon ECS CLI) 讓您能夠簡化本機開發的經驗,並輕鬆設定 Amazon ECS 叢集及其相關的資源 (例如 EC2 執行個體)。Amazon ECS CLI 支援 Docker Compose,這是一種可用來定義和執行多容器應用程式的開放原始碼工具。您可以在開發電腦和生產環境套用同一個用來定義多容器應用程式的 Compose 定義。Amazon ECS CLI 是開放原始碼,並可於這裡下載。

Amazon Elastic Container Service 讓您可以為每個 ECS 任務指定 IAM 角色。這讓 ECS 容器執行個體基於「最低權限」存取政策擁有最少的角色,並讓您可以分別管理執行個體角色與任務角色。您也可以查看 CloudTrail 日誌中追蹤的相關內容,例如哪個任務使用哪個角色。