

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 架構您的 Amazon ECS 應用程式
<a name="application_architecture"></a>

您可以透過為應用程式建立任務定義來架構自己的應用程式。任務定義包含用於定義應用程式相關資訊的參數，包括：
+ 所要使用的容量，會決定託管任務的基礎結構。

  在使用 EC2 容量提供者時，您也需選擇執行個體類型。在使用 Amazon ECS 受管執行個體容量提供者時，您可為 Amazon ECS 提供執行個體需求來管理運算容量。對於部分執行個體類型 (例如 GPU)，您需要設定特定參數。如需詳細資訊，請參閱[Amazon ECS 任務定義使用案例](use-cases.md)。
+ 容器映像，會包含應用程式程式碼，以及應用程式程式碼執行所需的所有相依性。
+ 任務中容器所要使用的聯網模式。

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

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

  對於在 Fargate 上執行的任務，必須使用 `awsvpc` 網路模式。
+ 任務所要使用的記錄組態。
+ 任務中容器所使用的任何資料磁碟區。

如需有關任務定義參數的完整清單，請參閱 [Fargate 的 Amazon ECS 任務定義參數](task_definition_parameters.md)。

建立任務定義時，請遵循下列準則：
+ 將每個任務定義系列僅用於一個業務目的。

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

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

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

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