Amazon ECS 常見問答集

一般問題

Amazon ECS 是全受管的主導性容器協同運作服務,向組織提供最簡單的方式可在 AWS、傳統 Amazon Elastic Cloud Compute (EC2) 執行個體或使用 AWS Fargate 的無伺服器運算平面建構、部署及管理任何規模的容器化應用程式。Amazon ECS 是全受管且無版本,可提供工具和內建支援,進而能夠更輕鬆地在 AWS 上建構和執行容器化應用程式。例如,Amazon ECS Service Connect 可簡化服務探索、連線能力和流量可觀測性,同時 Amazon CloudWatch Container Insights 可收集、彙總及總結指標和日誌。使用 Amazon ECS,您無需佈建或擴展伺服器或叢集,也不必選擇要在容器執行的伺服器類型,或最佳化叢集封裝。您可保留對容器作業屬性的控制權,並可指定 CPU 與記憶體需求、聯網與 IAM 政策,以及啟動類型與資料磁碟區。只需進行簡單的 API 呼叫,便可以啟動和停止啟用容器的應用程式,查詢叢集的完整狀態,使用許多熟悉的功能,包括安全群組、Elastic Load Balancing (ELB)、Amazon Elastic Block Store (EBS) 磁碟區和 Identity Access Management (IAM) 角色。您可以使用 Amazon ECS 來根據資源需求及可用性需求,在叢集排程容器的放置。

Amazon ECS 是全受管容器協同運作服務,可讓您輕鬆利用容器來部署及管理長時間執行的應用程式、服務與批次處理,而無需安裝、操作及擴展您自己的叢集管理基礎架構。Amazon ECS 維持應用程式的可用性,讓您擴展或縮減容器來符合應用程式的容量需求。當與 AWS Fargate 搭配使用時,Amazon ECS 可讓您部署應用程式,而無需佈建、管理或擴展運算基礎架構,進而縮短您成功建構、部署或遷移容器化應用程式所需的時間。此外,Amazon ECS 整合熟悉的功能,例如 ELB、(VPC)、Amazon 虛擬私有雲端 (VPC)、IAM、Application AutoScaling、Amazon CloudWatchAmazon Elastic File System (EFS),這代表您無需建構或維護一般抽象。

Amazon ECS 是全受管主導性容器協同運作服務,可為組織提供最簡單的方式來建構、部署及管理任何規模的容器化應用程式。Amazon ECS 是全受管且無版本,可提供工具和內建支援,進而能夠更輕鬆地在 AWS 上建構和執行容器化應用程式。例如,當您使用 Amazon ECS 時,您無需佈建或擴展伺服器或叢集,也不必選擇要在容器執行的伺服器類型,或最佳化叢集封裝。您可保留對容器作業屬性的控制權,並可指定 CPU 與記憶體需求、聯網與 IAM 政策,運算平台 (AWS Fargate 或 Amazon EC2),以及資料磁碟區。 

當搭配 AWS Fargate 時,Amazon ECS 可支援無伺服器容器協同運作,因此在擴展、維護可用性及保護容器化工作負載方面,您可充分利用 AWS 的卓越營運。如您想在幾乎不需進行重構的情況現代化容器型應用程式,但仍享受無伺服器運算所提供的規模、敏捷性與成本等眾多優勢,Amazon ECS 搭配 AWS Fargate 是理想的運算選擇。

Amazon ECS Service Connect 可簡化服務探索、連線能力和流量可觀測性,同時 Amazon ECS CloudWatch Container Insights 可收集、彙總及總結指標和日誌。如您希望以更有效的方式控制應用程式運行方式的特性,您可運用 Amazon EC2 的 Amazon ECS;如您想在基礎架構執行容器工作負載,則可運用 Amazon ECS Anywhere。整體而言,AWS Fargate 的 Amazon ECS、Amazon EC2 的 Amazon ECS 與 Amazon ECS Anywhere 均能讓您透過相同體驗及工具執行各種應用程式。有鑑於此,超過 65% 的所有新 AWS 容器客戶採用 Amazon ECS。

透過 AWS,您可擁有全方位的無伺服器運算選項,包括搭配 AWS Fargate 的 Amazon ECS 與 AWS Lambda,此為無伺服器運算服務,可透過事件驅動架構 (EDA) 執行程式碼來回應事件,並為您自動管理基礎運算資源。您可根據您的使用案例來採用其中一或多個運算選項。無論是搭配 AWS Fargate 的 Amazon ECS 或是 AWS Lambda,AWS 無伺服器選擇都能提供無伺服器運算所帶來的規模、敏捷性與成本優勢。

使用 Amazon ECS 不會收取其他費用。您需針對為儲存及執行應用程式所建立的 AWS 資源 (例如,Amazon EC2 執行個體、AWS Fargate 資源,或 Amazon EBS 磁碟區) 支付費用。您只需按實際用量付費;既沒有最低費用,也沒有前期承諾。Amazon ECS 有兩種不同的收費模式。AWS Outposts 上的 Amazon ECS 遵循與 Amazon EC2 啟動類型相同的模型。 

  • Amazon EC2 啟動類型模型:Amazon EC2 啟動類型不需額外費用。您需針對為儲存及執行應用程式所建立的 AWS 資源 (例如,Amazon EC2 執行個體或 Amazon EBS 磁碟區) 支付費用。您只需按實際用量付費;既沒有最低費用,也沒有前期承諾。請參閱 Amazon EC2 定價頁面的詳細定價資訊。
  • AWS Fargate 啟動類型模型:使用 AWS Fargate,您需支付容器化應用程式所請求之 vCPU 和記憶體資源數量的費用。系統會從您取出容器映像時開始計算 vCPU 及記憶體資源,直到 Amazon ECS 任務終止,時間長度將進位至最近的秒數。需支付一分鐘最低費用。請參閱 AWS Fargate 定價頁面的詳細定價資訊。

Amazon ECS 是可高度擴展的容器協同運作服務,可讓您執行及管理在容器執行的分散式應用程式。而 AWS Lambda 是一種事件驅動型任務運算服務,可執行程式碼來回應「事件」(例如,資料變更、網站點擊) 或其他 AWS 服務中的訊息,而您無須管理任何運算基礎設施。 許多應用程式在生產過程採用這兩種建構模組,客戶通常兼用兩者來利用其各自優勢。

使用 Amazon ECS

請瀏覽我們的入門頁面,進一步了解有關如何開始使用 Amazon ECS。 無論您是 AWS ECS 新手還是已擁有使用案例,均可選擇自己的路徑,並按照精心策劃的學習步驟開始使用。

現代應用程式 (例如微型服務) 架構建議分割應用程式為個別單位,而 Amazon ECS 已針對此模式進行最佳化。 任務是 Amazon ECS 最小的運算單位,可讓您定義要一起置放的一組容器、其屬性以及其可能的連結方式。任務包括 Amazon ECS 做出置放決策所需的所有資訊。要啟動單一容器,您的任務定義應只包含一個容器定義。

是。Amazon ECS 服務排程器可以管理長時間執行的應用程式和服務。使用服務排程器可協助您維持應用程式的可用性,讓您擴展或縮減容器來符合應用程式的容量需求。服務排程器可讓您利用 ELB 在各個容器間分配流量。Amazon ECS 將自動從關聯的負載平衡器中註冊和取消註冊您的容器。服務排程器也會自動恢復運作狀態不佳 (即 ELB 運作狀態檢查失敗) 的容器或停止執行,以確保您擁有所需數量的運作狀態良好的容器來支援應用程式。

變更您希望服務執行的容器數量,可以擴展和縮減應用程式的規模。變更應用程式的定義或使用新的映像可以更新應用程式。排程器將自動啟動使用新定義的新容器並停止執行舊版本的容器 (如果使用 ELB,則會等待 ELB 連接耗盡)。

部署到 Amazon ECS 的應用程式與微型服務可利用 Application Auto Scaling 服務來根據觀察到的指標資料進行自動擴展。Amazon ECS 會根據服務所屬任務所消耗的 CPU 與記憶體資源來衡量服務使用率,並利用這些資料來發佈 CloudWatch 指標,即 ECSServiceAverageCPUUtilization 與 ECSServiceAverageMemoryUtilization。然後,Application Auto Scaling 可搭配使用這些預先定義的指標與擴展政策,按比例擴展服務中的任務數量。此外,部分使用案例無法僅依賴服務的平均 CPU 與記憶體用量來作為可靠指標並據以執行擴展動作的時間及程度。為此,Application Auto Scaling 還支援根據自訂指標規格來擴展服務,這些指標代表我們選擇的 CloudWatch 指標,這可能更符合需求。這包括追蹤其他應用程式面向的指標,例如收到的 HTTP 請求數目、從佇列/主題擷取的訊息數目,以及資料庫交易數目。您現可利用您選擇的 CloudWatch 指標或 Prometheus 指標

如需進一步資訊,請造訪:根據自訂 CloudWatch 與 Prometheus 指標自動擴展 Amazon ECS 服務

Amazon ECS 可讓您運用各種運算選項並以相同體驗及工具執行各種應用程式:

  • AWS Fargate:AWS Fargate 是無伺服器的依用量計費運算引擎。其可消除您的負擔,無需佈建伺服器、管理叢集及協同運作。Amazon ECS 使用 AWS Fargate 佈建的容器來自動擴展、平衡負載和管理容器的可用性調度,提供一種更簡單的容器化應用程式建構和操作方法。
  • Amazon EC2:使用 Amazon 在 EC2 的 ECS,您擁有 EC2 執行個體,並完全控制基礎架構管理的所有面向。例如,您可選取特定 EC2 執行個體類型或自訂基礎作業系統。您可利用 Auto Scaling 群組 Capacity Providers 來管理 EC2 執行個體的擴展。
  • 內部部署虛擬機器 (VM) 或伺服器:
    • Amazon ECS Anywhere 提供支援,可註冊外部執行個體 (例如內部部署伺服器或虛擬機器 (VM)) 至您的 Amazon ECS 叢集。 
    • 容量可位於下列任何 AWS 資源:    
      • 可用區域
      • 本地區域
      • Wavelength 區域
      • AWS 區域
      • AWS Outposts

是。Amazon ECS 支援 AWS Fargate 與 Amazon EC2 的自動擴展運算基礎架構,以便您可專注於建構及擴展應用程式,而非底層基礎架構。

由於 AWS Fargate 會自動佈建、擴展及更新應用程式所需的運算基礎架構,因此搭配 AWS Fargate 的 Amazon ECS 可向您提供無伺服器體驗。

對於需要 Amazon EC2 容量的應用程式,Amazon ECS 提供 Auto Scaling 群組 Capacity Providers,其可回應應用程式的容量需求自動擴展 Amazon EC2 執行個體。您可利用 Amazon EC2 執行個體類型、Amazon Machine Image (AMI)、網路設定等所需組態來建立 Amazon EC2 Auto Scaling 群組 (ASG),並建立 Capacity Provider,以便根據應用程式的排程需求與負載自動擴展該 ASG 的 Amazon EC2 執行個體。根據您的工作負載管理 ASG 的縮減及擴展動作。

Amazon ECS Capacity Providers 是一種介面,您可透過此介面來定義應用程式的容量需求。您可透過容量供應商來定義具彈性的規則指定應用程式如何在不同類型的運算容量執行,並管理容量的擴展。Capacity Providers 可以與 Amazon EC2 和 AWS Fargate 一起使用。Amazon ECS 為每個叢集提供 AWS Fargate 與 Fargate-Spot 容量的預先定義容量供應商。對於 Amazon EC2,您可建立自己的 ASG 容量供應商來管理 Amazon EC2 Auto Scaling 群組的擴展。在執行 Amazon ECS 任務與服務時,您可將其拆分到多個容量供應商,例如跨 AWS Fargate 與 Fargate Spot 容量以預定義的拆分百分比執行服務。

是。您可以使用 Amazon ECS Run 任務一次執行一個或多個任務。Run 任務在符合任務要求 (包括 CPU、記憶體和連接埠) 的執行個體中開始執行任務。 您也可利用 AWS Batch 在 Amazon ECS 規劃、排程及執行批次運算工作負載,以便專注於分析結果並解決問題。 

是。您可以使用符合 Amazon ECS AMI 規格的任何 AMI。我們建議先從啟用 Amazon ECS 的 Amazon Linux AMI 開始使用。您也可以使用與 Amazon ECS 相容的合作夥伴 AMI。您可以檢閱相關文件了解 Amazon ECS AMI 規格。

Amazon ECR 已與 Amazon ECS 整合,讓您可輕鬆存放、執行及管理在 Amazon ECS 執行的應用程式容器映像。您只需要在任務定義中指定 Amazon ECR 儲存庫,並將 AmazonEC2ContainerServiceforEC2Role 連接到您的執行個體。然後 Amazon ECS 就會替應用程式擷取適合的映像。

AWS Fargate 提供無伺服器運算,以便搭配 Amazon ECS 來執行容器。AWS Fargate 可讓客戶啟動容器,而無需佈建或管理 Amazon EC2 執行個體。要想在 AWS 上啟動和執行容器,最快的方法就是使用 AWS Fargate。客戶若需以更有效的方式控制 EC2 執行個體,以便滿足各種合規與監管規定,或者希望能有更多自訂選項可供選擇,則可選擇利用 Amazon ECS 搭配 Amazon EC2 執行個體。

Amazon ECS 支援 Docker 聯網且與 Amazon VPC 整合,可提供容器隔離。這可讓您控制容器與其他服務和外部流量連接的方式。Amazon ECS 提供四種可滿足不同使用案例需求的容器聯網模式讓您從中選擇:

  • VPC 模式:此模式為每個執行中 Amazon ECS 任務指派專用的彈性聯網界面,允許 VPC 中的容器完整聯網功能,就和 Amazon EC2 執行個體一樣。
  • Bridge 模式:此模式會建立 Linux 橋接以連接在本機虛擬網路主機上執行的所有容器,其可透過主機的預設網路連線存取。
  • Host 模式:此模式直接將容器新增到主機的網路堆疊,在主機的網路上公開容器,沒有隔離。
  • 無:此模式會停用容器的外部聯網。
  • 服務連線:Amazon ECS Service Connect 簡化了 Amazon ECS 的服務探索、連線和流量可觀測性。它可讓您專注於應用程式程式碼,而不是網路基礎結構,能協助您更快地建構應用程式。您可以使用 Amazon ECS Service Connect 來定義服務端點的邏輯名稱,並在用戶端應用程式中使用它們來連線至相依性。Amazon ECS Service Connect 可協助您將流量傳送至運作狀態良好的端點,並在 Amazon ECS 主控台和 Amazon CloudWatch 中提供豐富的流量遙測。若是使用 Amazon ECS Service Connect,原生 Amazon ECS 部署將更加穩固,因其支援自動連接耗盡功能,可協助用戶端應用程式切換至新版本的服務端點,而不會遇到流量錯誤。使用 Amazon ECS Service Connect,您可以:
    • 只需一個步驟即可設定用戶端應用程式連線至其相依性的方式
    • 使用邏輯命名編寫和操作彈性分散式應用程式
    • 監控和分配 Amazon ECS 任務之間的流量,而無需部署和設定負載平衡器
    • 更快地部署服務並提供包含應用程式的 Amazon ECS 微型服務的無縫整合
  • 服務探索:Amazon ECS 已與 AWS Cloud Map 整合,以讓您的容器化服務易於彼此探索和連接。AWS Cloud Map 是一種雲端資源探索服務,可讓您定義應用程式資源的自訂名稱。由於 Web 服務始終能發現這些動態變更資源的最新位置,因此這能提高您應用程式的可用性。
  • 監控
    • 您可利用 Amazon CloudWatch 監控您的 Amazon ECS 資源。Amazon CloudWatch 會收集 Amazon ECS 的原始資料並處理為可讀且近乎即時的指標。這些統計資料會記錄兩週,以便您可存取歷史資訊,並針對叢集或服務的效能取得更深入了解。這不必額外付費。若要進一步了解,請造訪 Amazon ECS CloudWatch 指標
    • 如需增強的指標,請利用 CloudWatch Container Insights 來收集、彙總及總結容器化應用程式與微型服務的指標與日誌,這適用於在 Amazon EC2 與 AWS Fargate 執行的 Amazon ECS 叢集。CloudWatch 會自動收集許多資源的指標,例如 CPU、記憶體、磁碟與網路。Container Insights 還提供診斷資訊,例如容器重新啟動失敗,以便協助您隔離問題並快速加以解決。對於 Amazon ECS,Container Insights 會在 Linux 與 Windows Server 執行個體收集叢集、任務與服務層級的指標。其僅能在 Linux 執行個體收集執行個體層級的指標。網路指標僅適用於橋接網路模式與 awsvpc 網路模式的容器。它們不適用於託管網路模式的容器。如需進一步資訊,請造訪使用 Container Insights
  • 記錄日誌
    • Amazon ECS 能夠記錄所有的 Amazon ECS API 呼叫,並透過 AWS CloudTrail 將日誌檔案交付給您。所記錄的資訊包括 API 發起人的身分、API 呼叫的時間、API 發起人的來源 IP 地址、請求參數以及 Amazon ECS 傳回的回應元素。CloudTrail 可為您提供來自 AWS 管理主控台、AWS 開發套件和 AWS CLI 的 API 呼叫歷史記錄,以進行安全分析、資源變更追蹤以及合規稽核等工作。
  • AWS Config
    • AWS Config 與 Amazon ECS 整合,可讓您檢視 AWS 帳戶中 AWS 資源的組態。AWS Config 可讓使用者監控和追蹤資源的設定方式、它們如何相互相關,以及組態和關係如何隨時間變化。AWS Config 可讓您簡化合規和安全性、操作疑難排解以及資源管理。
  • 第三方
    • Amazon ECS 透過採納開放容器標準來支援由第三方可觀測性供應商組成的整個生態系統。如需詳細資訊,請參閱 Amazon ECS 合作夥伴頁面

Amazon ECS 提供以下儲存選項:

Amazon Elastic File System (EFS):Amazon EFS 提供無伺服器、完全彈性、可擴展的檔案儲存空間,可搭配 Amazon ECS 任務使用。您可以將共用的 Amazon EFS 檔案系統掛載到您的 ECS 任務,以進行持續儲存。

Amazon Elastic Block Store (EBS):Amazon EBS 為您的 Amazon ECS 任務提供可擴展的高效能儲存空間。您可以設定 ECS 以佈建具有所需特性 (大小、效能、加密等) 的 EBS 磁碟區並附接至 Amazon ECS 任務。

AWS 成本和用量報告 (CUR) 和 AWS Cost Explorer 會自動提供 AWS Fargate 上執行的 Amazon ECS 任務的成本資訊。對於 Amazon ECS 任務,您可以使用受管標籤以及使用者新增的標籤來彙總成本並將其劃歸到新的和現有的業務部門、團隊或應用程式。

進一步了解 Amazon ECS 用量報告

您可以透過選擇使用 Amazon ECS 的拆分成本歸屬資料功能,在 AWS 成本和用量報告 (CUR) 中查看在 Amazon EC2 執行個體上執行的 Amazon ECS 任務的成本和用量資訊。拆分成本歸屬資料功能在任務層級計算在 Amazon EC2 執行個體上執行的 Amazon ECS 任務的成本,計算的依據為每個任務的資源消耗 (按執行個體價格價格) 以及執行個體上執行的容器消耗的 CPU 和記憶體資源百分比。拆分成本歸屬資料功能會自動為 Amazon ECS 任務擷取受管標籤和使用者新增的標籤,使您能夠彙總成本並將其劃歸到新的和現有的業務部門、團隊或應用程式。您可以從 AWS 成本管理主控台偏好設定中選擇使用 Amazon ECS 的拆分成本歸屬資料功能。然後,您可以從 AWS 帳單主控台的 CUR 報告偏好設定中為個人 CUR 報告選擇使用拆分成本歸屬資料功能。 

進一步了解如何啟用拆分成本歸屬資料功能。
 

安全與合規

Amazon ECS 在客戶控制的 Amazon EC2 執行個體中排程要執行的容器,或者利用 AWS Fargate 並同時以 Amazon EC2 客戶可使用的相同隔離控制功能和合規設定為基礎來進行建構。您的運算執行個體位於虛擬私有雲端 (VPC),且包含您指定的 IP 範圍。您可以決定哪些執行個體向網際網路公開,哪些執行個體保持私有狀態。

  • 您的 Amazon EC2 執行個體使用 IAM 角色來存取 Amazon ECS 服務。
  • 您的 Amazon ECS 任務使用 IAM 角色來存取服務和資源。
  • 您在 AWS Fargate 執行的 Amazon ECS 任務會在隔離的虛擬機器執行。
  • 安全群組和網路 ACL 可讓您控制對您執行個體的入站和出站網路存取。
  • 您可以使用行業標準加密的 IPsec VPN 連線,將現有 IT 基礎架構連接至 VPC 中的資源。
  • 您可以將您的 Amazon EC2 資源佈建為專用預留執行個體。專用執行個體是為了增加額外的隔離,在單一客戶的專用硬體上執行的 Amazon EC2 執行個體。

是。作為 Amazon EC2 客戶,您擁有對您容器執行個體作業系統 (OS) 的根存取權。您可以擁有作業系統安全設定的擁有權,還可以為安全功能設定其他軟體元件,例如監控、修補程式管理、日誌管理和主機入侵偵測。 

利用 Amazon ECS 與 AWS Fargate 可提高安全性層級,且能向每個任務指派精細權限,進而在建構應用程式時獲得更高程度的隔離、網路存取控制及 IAM 控制。透過 AWS Fargate,每個任務都會在單獨的虛擬機器 (VM) 執行,相較於兩個任務共用相同主機,可帶來更大隔離性。每個任務也都有自己的網路介面,可讓安全群組套用至每個任務,並控制輸入及輸出流量。

是。客戶可以設定容器執行個體來存取 VPC 中的私有容器影像登錄檔,或是 VPC 外可以存取的登錄檔,例如 Amazon ECR

首先,您需要使用 'Amazon EC2 Container Service Task Role’ 服務角色並連接具有所需許可的政策,為任務建立 IAM 角色。當您建立新任務定義或任務定義修訂時,可以從 ’Task Role’ 下拉式清單選取角色或使用 JSON 格式的 ‘taskRoleArn’ 欄位來指定角色。

Amazon ECS 符合 PCI DSS 第 1 級、ISO 9001、ISO 27001、ISO 27017、ISO 27018、SOC 1、SOC 2、SOC 3 等標準,也符合 HIPAA 規範。

如需詳細資訊,請參閱我們的合規頁面

是。Amazon ECS 是 HIPAA 合規服務。若您已與 AWS 簽訂商業夥伴增訂合約 (BAA),可利用 Amazon ECS 使用部署於 AWS Fargate 啟動類型或 Amazon EC2 運算執行個體的容器,處理加密的受保護健康資訊 (PHI)。


如需詳細資訊,請參閱我們的 HIPAA 合規頁面。您若打算處理、存放或傳輸 PHI,但尚未與 AWS 簽訂任何 BAA,請聯絡我們取得詳細資訊。

是。透過使用 AWS GovCloud (US) 區域,Amazon ECS 管理的容器和叢集可透過您的容器滿足敏感資料和受管制工作負載的需求。如需詳細資訊,請參閱我們的 AWS GovCloud 頁面。

客戶也可在符合美國聯邦資訊處理標準 (FIPS) 140-2 的情況,利用 AWS Fargate 在 Amazon ECS 部署工作負載。FIPS 是美國與加拿大政府標準,具體說明密碼模組的安全要求,以保護敏感資訊。

Amazon ECS 的架構設計是安全的設計,並與 AWS 原生安全服務整合,以提供安全性、身分識別和合規性。例如,您可以使用 Amazon GuardDuty 監控 AWS Fargate 或 Amazon EC2 上執行的 Amazon ECS 工作負載,以偵測潛在的惡意或可疑行為。

服務水準協議

我們的運算 SLA 保證 Amazon ECS 每個月正常執行時間百分比至少為 99.99%。 AWS 針對 Amazon ECS 與 AWS Fargate 做出兩項 SLA 承諾:(1) 多可用區內含容器服務 SLA,用於控管跨多個可用區域部署的內含容器服務;以及 (2) 單一任務/Pod SLA,用於個別控管內包容器服務任務和 Pod。請參閱 AWS Fargate 與 Amazon Elastic Container Service SLA 頁面

如果您在一個以上的可用區域內執行某項任務,而且在每個月結算週期內,同一個區域每個月的正常執行時間百分比低於 99.99%,則根據運算 SLA,您有資格獲得 Amazon ECS 的 SLA 積分。

如需 SLA 所有條款與條件的完整詳細資訊,以及如何提交索賠的詳細資訊,請參閱運算 SLA 詳細資訊頁面