架構您的 Amazon ECS 應用程式 - Amazon Elastic Container Service

架構您的 Amazon ECS 應用程式

您可以透過為應用程式建立任務定義來架構自己的應用程式。任務定義包含用於定義應用程式相關資訊的參數,包括:

  • 所要使用的容量,會決定託管任務的基礎結構。

    在使用 EC2 容量提供者時,您也需選擇執行個體類型。在使用 Amazon ECS 受管執行個體容量提供者時,您可為 Amazon ECS 提供執行個體需求來管理運算容量。對於部分執行個體類型 (例如 GPU),您需要設定特定參數。如需更多詳細資訊,請參閱 Amazon ECS 任務定義使用案例

  • 容器映像,會包含應用程式程式碼,以及應用程式程式碼執行所需的所有相依性。

  • 任務中容器所要使用的網路模式。

    網路模式決定了任務如何透過網路進行通訊。

    對於在 EC2 執行個體與 Amazon ECS 受管執行個體上執行的任務,雖有多種選項可供選擇,但建議使用 awsvpc 網路模式。awsvpc 網路模式可簡化容器網路設定,賦予您更高的控制權來控管應用程式彼此之間以及應用程式與 VPC 內其他服務之間的通訊方式。

    對於在 Fargate 上執行的任務,必須使用 awsvpc 網路模式。

  • 任務所要使用的記錄組態。

  • 任務中容器所使用的任何資料磁碟區。

如需有關任務定義參數的完整清單,請參閱 Fargate 的 Amazon ECS 任務定義參數

建立任務定義時,請遵循下列準則:

  • 將每個任務定義系列僅用於一個業務目的。

    如果您將多種類型的應用程式容器分組在相同的任務定義中,則無法獨立擴展這些容器。例如,網站與 API 通常需要不同的擴展模式。隨著流量增加,所需的 Web 容器數量可能與 API 容器不同。如果這兩個容器部署在相同的任務定義中,則每個任務都會執行相同數量的 Web 容器與 API 容器。

  • 將每個應用程式版本與任務定義系列中的任務定義修訂版進行比對。

    在任務定義系列中,每個任務定義修訂版皆代表特定容器映像設定的時間點快照。這類似於容器是執行特定版本應用程式程式碼所需所有元件的快照。

    建立應用程式程式碼版本、容器映像標籤與任務定義修訂版之間的一對一映射關係。典型的發佈過程涉及 git commit,該提交會轉換為使用 git commit SHA 標記的容器映像。然後,該容器映像標籤會取得自己的 Amazon ECS 任務定義修訂版。最後,更新 Amazon ECS 服務以部署這個新的任務定義修訂版。

  • 針對每個任務定義系列使用不同的 IAM 角色。

    使用自己的 IAM 角色定義每個任務定義。除了實作此實務,還需為每個業務元件提供專屬的任務定義系列。透過實作這兩種最佳實務,您可以限制每個服務對 AWS 帳戶中資源的存取權限。例如,您可以授予身分驗證服務存取權限以連線到您的密碼資料庫。同時,您還可以確保只有您的訂單服務才能存取信用卡付款資訊。