

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

# Amazon ECS 受管執行個體的架構
<a name="ManagedInstances"></a>

Amazon ECS 受管執行個體是 Amazon ECS 的一種全受管運算選項，讓您能在全部類型的 Amazon EC2 執行個體上執行容器化工作負載，同時將基礎結構管理工作交由 AWS負責。透過 Amazon ECS 受管執行個體，您可以存取特定運算功能，例如 GPU 加速、特定 CPU 架構、高網路效能和特殊執行個體類型，同時 AWS 處理基礎基礎設施的佈建、擴展、修補和維護。

當您使用 Amazon ECS 受管執行個體時，您可以將應用程式封裝在容器中並指定運算需求。 AWS 會自動選取最符合工作負載需求的成本最佳化一般用途 Amazon EC2 執行個體類型，或者您可以指定所需的執行個體屬性，包括執行個體類型、CPU 製造商和加速器。Amazon ECS 受管執行個體可完全管理基礎設施的所有層面，包括擴展、修補和成本最佳化，而不會交換對 AWS 功能和 Amazon EC2 整合的存取。

Amazon ECS 受管執行個體支援具有平台特定最佳化和安全性組態的 Linux 容器。依預設，Amazon ECS 受管執行個體透過將多個較小的任務置放在較大的執行個體上來最佳化基礎結構使用率，協助降低成本並改善任務啟動時間。

本主題介紹 Amazon ECS 受管執行個體任務與服務的不同元件，並指出將 Amazon ECS 受管執行個體與 Amazon ECS 搭配使用時的特別考量。

## 開始使用
<a name="managed-instances-walkthrough"></a>

若要開始使用 Amazon ECS 受管執行個體，您可以建立所需的 IAM 角色，並在 AWS 帳戶中啟用 Amazon ECS 受管執行個體。然後，您可以建立容量提供者並使用 Amazon ECS 受管執行個體容量提供者啟動任務或服務。

如需有關開始使用的詳細說明，請參閱：
+ [了解如何為 Amazon ECS 受管執行個體建立任務](getting-started-managed-instances.md)
+ [了解如何使用 為 Amazon ECS 受管執行個體建立任務 AWS CLI](getting-started-managed-instances-cli.md)

## 容量提供者
<a name="managed-instances-capacity-providers"></a>

Amazon ECS 受管執行個體會使用容量提供者來管理工作負載的運算容量。建立容量提供者時，您可以使用預設執行個體選擇或使用 指定自訂執行個體需求`instanceRequirements`。

可用的容量提供者選項如下：
+ **預設容量提供者** – 針對工作負載需求自動選取最具成本效益的一般用途執行個體類型。
+ **自訂容量提供者** – 可讓您使用屬性型執行個體類型選取來指定執行個體屬性，包括 vCPU 計數、記憶體、CPU 製造商、加速器類型與特定執行個體類型。

容量提供者策略只能包含下列清單中的一個容量提供者類型：
+ Amazon ECS 受管執行個體
+ Auto Scaling 群組
+ Fargate/Fargate\$1SPOT

## 執行個體選擇與最佳化
<a name="managed-instances-instance-selection"></a>

Amazon ECS 可使用下列其中一種方法為 Amazon ECS 受管執行個體工作負載選擇執行個體類型：
+ **自動選取** – 當使用預設容量提供者時，Amazon ECS 會自動選取最具成本效益的一般用途執行個體類型，這些類型符合任務定義中指定的 CPU 與記憶體需求。
+ **屬性型選取** – 當使用自訂容量提供者時，您可以指定執行個體屬性，例如 vCPU 計數、記憶體大小、CPU 製造商、加速器類型與特定執行個體類型。Amazon ECS 會從符合所指定屬性的所有執行個體類型中選取。

Amazon ECS 受管執行個體透過數種機制來最佳化基礎結構使用率與成本：
+ 多任務置放 – 依預設，Amazon ECS 會將多個較小的任務置放到較大的執行個體上，以最大化使用率並降低成本。
+ 主動工作負載整合 – Amazon ECS 會識別容器執行個體何時真正處於閒置狀態，同時嘗試避免可能影響應用程式可用性或部署效能的提早終止。系統會遵守為服務設定的任務數量下限和上限、先啟動後停止行為以及任務保護行為。
+ 最適化調整 – 隨著工作負載需求的變更，Amazon ECS 會啟動針對目前需求而適當調整了大小的替代執行個體。

Amazon ECS 會使用 Amazon EC2 事件時段，在您偏好的時段內排程維護活動。事件時段可讓您定義 AWS 可以對執行個體執行維護的週期性時段，從而透過使維護與操作排程保持一致，協助您將對工作負載的干擾降至最低。如需詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [Scheduled events for your instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/event-windows.html)。

如果您需要嚴格隔離，則可以將 Amazon ECS 受管執行個體設定為在具有 VM 層級安全隔離界限的個別執行個體上執行各項任務。

## 任務定義
<a name="managed-instances-task-definitions"></a>

使用 Amazon ECS 受管執行個體的任務支援大多數 Amazon ECS 任務定義參數。Amazon ECS 受管執行個體與使用平台版本 1.4.0 的現有 Fargate 任務定義相容，讓遷移變得簡單。

若要使用 Amazon ECS 受管執行個體，請將 `requiresCompatibilities` 任務定義參數設定為包含 `MANAGED_INSTANCES`。任務定義可以指定 Fargate 與 Amazon ECS 受管執行個體相容性，以在部署選項中具有彈性。

## 作業系統與 CPU 架構
<a name="welcome-operating-system"></a>

支援以下作業系統：
+ Bottlerocket

有兩種架構可用於 Amazon ECS 任務定義，即 ARM 和 X86\$164。

當您在 Amazon ECS 受管執行個體上執行 Linux 容器時，對於基於 ARM 的應用程式，可以使用 X86\$164 CPU 架構或 ARM64 架構。

## 主要功能
<a name="managed-instances-key-features"></a>

以下是 Amazon ECS 受管執行個體的主要功能：
+ 選取特定 EC2 執行個體類型以符合應用程式的需求，以便存取專用硬體功能，例如 GPU 加速運算、特定 CPU 功能與大型記憶體大小。
+ 依預設，透過將多個任務置放到單一執行個體上來最佳化資源使用率與成本。這一點與在自己的隔離環境中執行各項任務的 Fargate 不同。
+ 確保安全合規和定期執行個體修補。ECS 受管執行個體會在 14 天後啟動執行個體耗盡，並自動將服務型任務取代為新的執行個體。
+ 使用特權 Linux 功能 (包括 CAP\$1NET\$1ADMIN、CAP\$1SYS\$1ADMIN 與 CAP\$1BPF)，在容器內啟用進階聯網設定與系統管理功能。

## IAM 角色
<a name="managed-instances-iam-roles"></a>

Amazon ECS 受管執行個體需要兩個 IAM 角色：
+ *基礎設施角色*：此角色允許 代表您 AWS 管理 Amazon ECS 受管執行個體。
+ *執行個體設定檔*：執行個體設定檔是將 IAM 角色傳遞至 Amazon ECS 受管執行個體的一種方式。此設定檔用於：
  + 定義執行容器工作負載之 Amazon ECS 受管執行個體的 IAM 許可。
  + 允許 代表您 AWS 管理這些執行個體。
  + 讓執行個體根據設定檔中定義的許可存取 AWS 服務。

## 安全和合規
<a name="managed-instances-security"></a>

Amazon ECS 受管執行個體會實作多層安全性來保護工作負載：
+ **安全組態** - Amazon ECS 受管執行個體遵循 AWS 安全最佳實務，包括無 SSH 存取、不可變的根檔案系統，以及透過 SELinux 的核心層級強制性存取控制。
+ **自動修補** - 使用最新的安全修補程式 AWS 定期更新 Amazon ECS 受管執行個體，並遵循您設定的維護時段。
+ **執行個體生命週期有限** - ECS 會在 14 天後自動啟動執行個體耗盡，確保您的應用程式在具有up-to-date安全修補程式的適當設定執行個體上執行。
+ **特權功能** – 您可以選擇為需要特權 Linux 功能的工作負載 (例如網路監控與可觀測性解決方案) 啟用這些功能。

Amazon ECS 受管執行個體支援與 Amazon ECS 所支援的相同合規計畫，包括 PCI-DSS、HIPAA 與 FedRAMP。在支援的區域中，Amazon ECS 受管執行個體會遵守您的帳戶層級 FIPS 端點設定，協助達成 FedRAMP 合規。

## 聯網
<a name="managed-instances-networking"></a>

Amazon ECS 受管執行個體支援 `awsvpc` 與 `host` 網路模式。`awsvpc` 網路模式為每項任務提供自己的彈性網路介面和 VPC 內的私有 IP 位址。這能夠在任務層級實現精細的安全群組與網路 ACL 控制。在 `host` 網路模式中，任務會共用主機 Amazon ECS 受管執行個體的網路命名空間。如需有關 Amazon ECS 受管執行個體上任務聯網設定的詳細資訊，請參閱 [Amazon ECS 受管執行個體的 Amazon ECS 任務聯網](managed-instance-networking.md)。

## 執行個體儲存體
<a name="managed-instances-storage"></a>

Amazon ECS 受管執行個體支援對連接至執行個體的 Amazon EBS 資料磁碟區的大小進行設定。此儲存體會在執行個體上執行的所有任務之間共用，並可用於綁定掛載。磁碟區可以在任務定義中使用 `volumes`、`mountPoint` 與 `volumesFrom` 參數的容器之間共用和掛載。

 磁碟區會在執行個體建立期間連接。當您使用 `storageConfiguration` 參數建立 Amazon ECS 受管執行個體容量提供者時，可以指定磁碟區的大小，以 GiB 為單位。

```
{
...

    "managedInstancesProvider": {
        "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole",
        "instanceLaunchTemplate": {
            "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile",
            "networkConfiguration": {
                "subnets": [
                    "subnet-abcdef01234567",
                    "subnet-bcdefa98765432"
                ],
                "securityGroups": [ 
                    "sg-0123456789abcdef"
                ]
            },
            "storageConfiguration": {
                "storageSizeinGiB" : 100

            }
        }
    }
 ... 
}
```

此磁碟區的大小下限為 30 GiB，大小上限為 16,384 GiB。此磁碟區的預設大小為 80 GiB。

任務的提取、壓縮與未壓縮的容器映像都會儲存在此磁碟區中。若要判斷任務必須用作綁定掛載的執行個體儲存總量，則必須從分配給任務的執行個體儲存總量中減去容器映像所使用的儲存量。



連接至 Amazon ECS 受管執行個體的 Amazon EBS 磁碟區效能符合對應的 Amazon EC2 執行個體的效能，如 *Amazon EC2 User Guide* 中的 [Amazon EBS-optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) 文件所述。

您可以建立磁碟區的快照，對安全問題執行鑑識分析或對應用程式偵錯。如需有關建立 Amazon EBS 磁碟區快照的詳細資訊，請參閱 *Amazon EBS User Guide* 中的 [Amazon EBS snapshots](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html)。如果您已預設啟用 Amazon EBS 加密，磁碟區將使用預設指定用於加密的 AWS KMS 金鑰進行加密。如需有關預設加密的詳細資訊，請參閱 *Amazon EBS User Guide* 中的 [Enable Amazon EBS encryption by default](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html)。

除了使用連接至執行個體的資料磁碟區之外，您也可以為在 Amazon ECS 受管執行個體上執行的每項任務設定資料磁碟區。如需有關可用的任務層級儲存選項的詳細資訊，請參閱 [Amazon ECS 任務的儲存選項](using_data_volumes.md)。

## 本機儲存體
<a name="managed-instances-local-storage"></a>

[Amazon EC2 執行個體存放](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)區為您的 Amazon EC2 執行個體提供臨時區塊層級儲存。Amazon EC2 執行個體存放區提供的儲存體可透過實體連接至主機的磁碟存取。您可以設定 Amazon ECS 受管執行個體，以使用執行個體存放區做為在容器執行個體上執行之任務的資料磁碟區。當您啟用本機儲存體且執行個體具有執行個體存放磁碟區時，Amazon ECS 會使用執行個體存放磁碟區，而不是佈建 Amazon EBS 資料磁碟區。這可以降低儲存成本，並改善延遲敏感工作負載的 I/O 效能。將執行個體存放磁碟區與 Amazon ECS 受管執行個體搭配使用不會產生額外費用。

當執行個體有多個執行個體存放磁碟區時，Amazon ECS 會自動將其合併為單一 RAID 0 磁碟區，並將其顯示為任務的連續儲存體。當執行個體沒有執行個體存放磁碟區，或本機儲存停用時，Amazon ECS 會佈建大小為 的 Amazon EBS 資料磁碟區`storageSizeGiB`。執行個體存放區磁碟區是暫時性的。當執行個體停止、終止或硬體故障時，執行個體存放磁碟區上的資料會遺失。請勿將執行個體存放區用於必須保留的資料。

若要啟用本機儲存，請使用 `localStorageConfiguration` 參數[建立新的容量提供者](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-capacity-provider-managed-instances.html)，並將 `useLocalStorage`設定為 `true`。您也可以使用 `instanceRequirements` 參數來確保佈建的執行個體包含特定大小的本機儲存體。

**注意**  
當您使用 建立叢集時 AWS 管理主控台，Amazon ECS 建立的預設受管執行個體容量提供者不包含 `localStorageConfiguration`。

下列範例顯示已啟用本機儲存的容量提供者組態，以及指定至少 50 GiB 之 SSD 型執行個體存放區的執行個體需求。

```
{
...
    "managedInstancesProvider": {
        "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole",
        "instanceLaunchTemplate": {
            "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile",
            "networkConfiguration": {
                "subnets": [
                    "subnet-abcdef01234567",
                    "subnet-bcdefa98765432"
                ],
                "securityGroups": [
                    "sg-0123456789abcdef"
                ]
            },
            "storageConfiguration": {
                "storageSizeGiB": 50
            },
            "localStorageConfiguration": {
                "useLocalStorage": true
            },
            "instanceRequirements": {
                "localStorage": "REQUIRED",
                "totalLocalStorageGB": {
                    "Min": 50
                },
                "localStorageTypes": ["ssd"]
            }
        }
    }
}
```

當您省略`instanceRequirements`組態時，Amazon ECS 預設為 `localStorage` `INCLUDED`。在此情況下，Amazon ECS 會考慮使用和不使用執行個體存放區磁碟區的執行個體進行佈建。具有執行個體存放磁碟區的執行個體使用執行個體存放區處理資料磁碟區，而沒有執行個體存放磁碟區的執行個體則使用 Amazon EBS 資料磁碟區。`totalLocalStorageGB` 未指定 時，Amazon ECS 會使用所有可用的執行個體儲存體，不會強制執行大小下限。

中的`storageSizeGiB`值只會`storageConfiguration`定義 Amazon EBS 資料磁碟區大小，並在執行個體儲存體無法使用時使用。中的 `totalLocalStorageGB`值`instanceRequirements`控制佈建執行個體所需的執行個體儲存體大小下限。為了確保所有執行個體都使用本機儲存體，`localStorage`請將 設定為 `REQUIRED`，並使用 指定最小大小`totalLocalStorageGB`。

若要驗證特定佈建的容器執行個體是否使用本機儲存體，請檢查容器執行個體上的 `ecs.capability.storage.local-storage-enabled` 屬性。

## 服務負載平衡
<a name="managed-instances-load-balancing"></a>

使用 Amazon ECS 受管執行個體的 Amazon ECS 服務可以設定為使用 Elastic Load Balancing，將流量平均分配到服務中的各項任務。

Amazon ECS 受管執行個體上的 Amazon ECS 服務支援 Application Load Balancer、Network Load Balancer 與 Gateway Load Balancer 負載平衡器類型。Application Load Balancer 會路由 HTTP/HTTPS (第 7 層) 流量，而 Network Load Balancer 會路由 TCP 或 UDP (第 4 層) 流量。

當您為這些服務建立目標群組時，必須選擇 `ip` 作為目標類型，而不是選擇 `instance`。這是因為採用 `awsvpc` 網路模式的任務是與彈性網路介面相關聯，而非直接與 Amazon EC2 執行個體相關聯。

## 監控與可觀測性
<a name="managed-instances-monitoring"></a>

Amazon ECS 受管執行個體透過 CloudWatch 指標提供全面的監控功能，並與可觀測性工具整合：
+ **CloudWatch 指標** – 在任務與執行個體層級監控 CPU、記憶體、網路以及儲存使用率。
+ **Container Insights** – 取得容器化應用程式的詳細效能指標與日誌。
+ **第三方整合** – 啟用特殊權限功能後，您可以執行需要更高 Linux 許可的進階監控與可觀測性解決方案。

## 定價與成本最佳化
<a name="managed-instances-pricing"></a>

使用 Amazon ECS 受管執行個體時，您需要支付執行任務的整個 Amazon EC2 執行個體的費用。定價取決於為您的工作負載選取的執行個體類型。

Amazon ECS 受管執行個體提供數種成本最佳化功能：
+ **多任務最佳化** – 透過在適當大小的執行個體上執行多項任務，將執行個體使用率最大化。

您的 Compute Savings Plans 與 Instance Savings Plans 也適用於 Amazon ECS 受管執行個體工作負載。

## Service Quotas
<a name="managed-instances-service-quotas"></a>

Amazon ECS 受管執行個體工作負載受限於您的 Amazon EC2 隨需執行個體服務配額。使用 Amazon ECS 受管執行個體的 Amazon ECS 服務受限於 Amazon ECS 服務配額。

如需有關服務配額的詳細資訊，請參閱：
+ *Amazon Web Services 一般參考* 中的 [Amazon EC2 endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html)
+ [Amazon ECS 服務配額](service-quotas.md)

## 遷移考量事項
<a name="managed-instances-migration"></a>

對於大多數工作負載而言，遷移至 Amazon ECS 受管執行個體非常簡單：
+ **從 Fargate 遷移** – 僅需要容量提供者組態變更與重新部署。使用平台版本 1.4.0 的現有任務定義完全相容。
+ **從 EC2 遷移** – 與遷移至 Fargate 類似，但保留對 Amazon EC2 功能 (例如特定執行個體類型) 的存取權。

規劃遷移時請考量下列事項：
+ 應用程式應容忍 14 天的執行個體生命週期和計劃的維護時段。
+ 長時間執行的任務 (超過 14 天) 不適用於 Amazon ECS 受管執行個體。
+ 不支援自訂 AMIs - Amazon ECS 受管執行個體使用 AWS受管、安全最佳化 AMIs。

## 限制及考量
<a name="managed-instances-limitations"></a>

下列限制適用於 Amazon ECS 受管執行個體：
+ 自訂 AMIs - AMI 由 擁有和管理 AWS
+ 執行個體生命週期 – 為確保安全修補與合規，每個執行個體的執行時期上限為 14 天。
+ SSH 存取 – 出於安全原因而無法使用。使用 Amazon ECS Exec 進行偵錯與疑難排解。管理操作僅透過 Amazon ECS API 進行。

## 組織控制
<a name="managed-instances-organization-controls"></a>

有些組織控制可防止 Amazon ECS 受管執行個體正常運作。若是如此，您必須更新這些控制項，以允許 Amazon ECS 擁有代表您管理 EC2 執行個體所需的許可。

Amazon ECS 使用基礎設施角色來啟動支援 Amazon ECS 受管執行個體的 EC2 執行個體。此基礎設施角色是在您的帳戶中建立的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，可讓 Amazon ECS 代表您管理 Amazon ECS 受管執行個體。[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) SCPs) 一律適用於使用基礎設施角色執行的動作。這可讓 SCP 禁止 Amazon ECS 受管執行個體操作。最常見的情況是利用 SCP 來限制可以啟動的 Amazon Machine Image (AMI)。若要允許 Amazon ECS 受管執行個體正常運作，請修改 SCP 以允許從 Amazon ECS 受管執行個體 AMIs 帳戶啟動 AMI。

您也可使用 [EC2 允許的 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-allowed-amis.html) 功能來限制其他帳戶中 AMI 的可見性。如果您使用此功能，則必須展開映像條件，在感興趣的區域中也包含 Amazon ECS 受管執行個體 AMI 帳戶。

### 封鎖所有 AMIs SCP 範例，但 Amazon ECS 受管執行個體 AMIs 除外
<a name="example-scp-managed-instances"></a>

以下 SCP 可防止呼叫，`ec2:RunInstances`除非 AMI 屬於 us-west-2 或 us-east-1 的 Amazon ECS 受管執行個體 AMI 帳戶。

**注意**  
請務必**不要**使用`ec2:Owner`內容索引鍵。Amazon 擁有 Amazon ECS 受管執行個體 AMI 帳戶，此金鑰的值一律為 `amazon`。如果 `ec2:Owner``amazon`將允許啟動任何 Amazon ECS 受管執行個體的 AMIs，則建構允許啟動 AMI 的 SCP。

```
{
  "Version":"2012-10-17",		 	 	                                 
  "Statement": [
    {
      "Sid": "DenyAMI",
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": "arn:*:ec2:*::image/ami-*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": [
            "187296253231",
            "260073348889"
          ]
        }
      }
    }
  ]
}
```

### Amazon ECS 受管執行個體 AMI 帳戶
<a name="managed-instances-ami-accounts"></a>

AWS 帳戶因區域主機 Amazon ECS 受管執行個體公有 AMIs 而異。


| AWS 區域 | 帳戶 | 
| --- | --- | 
| af-south-1 | 070957084703 | 
| ap-east-1 | 587573215167 | 
| ap-northeast-1 | 679336465495 | 
| ap-northeast-2 | 309903600357 | 
| ap-northeast-3 | 384570461223 | 
| ap-south-1 | 062344138989 | 
| ap-south-2 | 624198668379 | 
| ap-southeast-1 | 832199679391 | 
| ap-southeast-2 | 552073033681 | 
| ap-southeast-3 | 368903466070 | 
| ap-southeast-4 | 696793786439 | 
| ap-southeast-5 | 003457290689 | 
| ap-southeast-6 | 465836752572 | 
| ap-southeast-7 | 622515864387 | 
| ca-central-1 | 853167153192 | 
| ca-west-1 | 899469777611 | 
| eu-central-1 | 832570432258 | 
| eu-central-2 | 041659148495 | 
| eu-north-1 | 851563870067 | 
| eu-south-1 | 766433696616 | 
| eu-south-2 | 003380494496 | 
| eu-west-1 | 986619735082 | 
| eu-west-2 | 591706807364 | 
| eu-west-3 | 108582616801 | 
| il-central-1 | 009537862704 | 
| me-central-1 | 540883425316 | 
| me-south-1 | 181438624895 | 
| mx-central-1 | 210749644920 | 
| sa-east-1 | 591338347621 | 
| us-east-1 | 260073348889 | 
| us-east-2 | 292185169523 | 
| us-west-1 | 187296253231 | 
| us-west-2 | 491085424538 | 

# Amazon ECS 受管執行個體的執行個體類型
<a name="managed-instances-instance-types"></a>

Amazon ECS 受管執行個體讓您可以為容器化應用程式選取特定的 EC2 執行個體類型。

## Amazon ECS 受管執行個體的執行個體系列
<a name="managed-instances-instance-families"></a>

支援下列執行個體類型：

### 一般用途
<a name="general-purpose-instances"></a>
+ m5、m5a、m5ad、m5d、m5dn、m5n、m5zn：平衡運算、記憶體與聯網
+ m6a、m6g、m6gd、m6i、m6id、m6idn、m6in：最新一代執行個體，效能得到提升
+ m7a、m7g、m7gd、m7i、m7i-flex：下一代一般用途執行個體
+ m8g、m8gd：最新一代 ARM 一般用途執行個體
+ t3、t3a、t4g：爆量效能執行個體 （奈米和微型執行個體大小除外）

### 運算最佳化
<a name="compute-optimized-instances"></a>
+ c5、c5a、c5ad、c5d、c5n：適用於運算密集型應用程式的高效能處理器
+ c6a、c6g、c6gd、c6i、c6id、c6in：最新一代運算最佳化執行個體
+ c7a、c7g、c7gd、c7gn、c7i、c7i-flex：下一代運算最佳化執行個體
+ c8g、c8gd、c8gn：最新一代 ARM 運算最佳化執行個體
+ hpc6a、hpc6id、hpc7a：高效能運算執行個體

### 記憶體最佳化
<a name="memory-optimized-instances"></a>
+ r5、r5a、r5ad、r5b、r5d、r5dn、r5n：高記憶體與 vCPU 比率執行個體，適用於記憶體密集型應用程式
+ r6a、r6g、r6gd、r6i、r6id、r6idn、r6in：最新一代記憶體最佳化的執行個體
+ r7a、r7g、r7gd、r7i、r7iz：下一代記憶體最佳化的執行個體
+ r8g、r8gd：最新一代 ARM 記憶體最佳化的執行個體
+ u-3tb1、u7i-6tb、u7i-8tb、u7i-12tb、u7in-24tb、u7in-32tb：高記憶體執行個體，RAM 高達 32 TB
+ x2gd、x2idn、x2iedn、x2iezn：適用於記憶體資料庫與分析的超大記憶體
+ x8g：最新一代超大記憶體執行個體
+ z1d：高頻率與 NVMe SSD 儲存體

### 儲存優化
<a name="storage-optimized-instances"></a>
+ d3、d3en：適用於分散式檔案系統的密集 HDD 儲存體
+ i4g、i4i：最新一代儲存最佳化執行個體
+ i7i、i7ie、i8g：下一代高效能儲存執行個體
+ im4gn、is4gen：網路最佳化儲存執行個體

### 加速運算
<a name="accelerated-computing-instances"></a>
+ g4dn：搭載 NVIDIA T4 GPU，適用於機器學習推論與圖形
+ g5、g5g：搭載 NVIDIA A10G GPU，適用於高效能圖形與 ML
+ g6、g6e、g6f：最新一代 GPU 執行個體
+ gr6、gr6f：搭載 NVIDIA L4 Tensor 核心 GPU 的 GPU 執行個體，vCPU:RAM 比率為 1:8，適用於圖形工作負載
+ p3dn：搭載 NVIDIA V100 GPU，適用於深度學習訓練與 HPC
+ p4d：搭載 NVIDIA A100 GPU，可實現最高效能的機器學習訓練
+ p5：搭載 NVIDIA H100 GPU 的最新一代執行個體
+ p6-b200：搭載 NVIDIA B200 GPU 的下一代執行個體

## 執行個體選擇方法
<a name="managed-instances-instance-selection-methods"></a>

Amazon ECS 受管執行個體提供兩種選取執行個體類型的方法：
+ *特定執行個體類型選取*：您可以明確指定要用於任務的 EC2 執行個體類型。
+ *屬性型執行個體類型選取*：您可以指定應用程式所需的屬性 (例如 vCPU、記憶體與架構)，Amazon ECS 受管執行個體會選取適當的執行個體類型。

## 特定執行個體類型選取
<a name="managed-instances-specific-instance-types"></a>

透過特定執行個體類型選取，您可以明確指定要用於 Amazon ECS 受管執行個體任務的 EC2 執行個體類型。當您的應用程式需要具有特定硬體特性的特定執行個體類型時，此方法很有用。

## 屬性型執行個體類型選項
<a name="managed-instances-attribute-based-selection"></a>

透過屬性型執行個體類型選取，您可以指定應用程式所需的屬性，Amazon ECS 受管執行個體會選取符合這些需求的適當執行個體類型。這可提供更大的彈性，並有助於確保即使特定執行個體類型不可用，也能成功置放任務。

指定多個屬性時，您會取得滿足所有指定屬性的執行個體類型。若您為某個屬性指定多個值，則您將取得滿足任何指定值的執行個體類型。

屬性型執行個體類型選取支援下列屬性：

**cpuArchitecture**  
CPU 架構。  
有效值：`X86_64` \$1 `ARM64`

**instanceGeneration**  
指示是否包含目前世代或上一代執行個體類型。  
+ 針對目前世代的執行個體類型，請指定 `current`。目前世代包含目前建議使用的 EC2 執行個體類型。這通常會包含每個執行個體系列中最新的二至三代。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。
+ 針對上一代執行個體類型，請指定 `previous`。
+ 若要同時包含目前和上一代執行個體類型，請指定 `all`。
有效值：`current` \$1 `previous` \$1 `all`  
預設：任何目前或上一代。

**burstablePerformance**  
指示是否包含、排除或需要爆量效能執行個體類型。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[爆量效能執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)。  
有效值：`included` \$1 `excluded` \$1 `required`  
預設：`excluded`

**cpuManufacturer**  
請列出要包含的特定 CPU 製造商。  
+ 針對使用 Intel CPU 的執行個體類型，請指定 `intel`。
+ 針對使用 AMD CPU 的執行個體類型，請指定 `amd`。
+ 對於具有 AWS CPUs執行個體類型 （例如 AWS Graviton)，請指定 `amazon-web-services`。
請勿混淆 CPU 硬體製造商與 CPU 硬體架構。執行個體會根據您指定的 Amazon Machine Image (AMI)，以相容的 CPU 架構啟動。
有效值：`intel` \$1 `amd` \$1 `amazon-web-services`  
預設：任何製造商。

**networkBandwidth**  
網路頻寬下限和上限，以每秒 Gb (Gbps) 為單位。  
預設：沒有下限或上限。

**networkInterfaceCount**  
網路介面數目的下限和上限。  
預設：沒有下限或上限。

**localStorage**  
指示是否包含、排除或需要執行個體儲存體磁碟區的執行個體類型。如需詳細資訊，請參閱[《Amazon EC2 使用者指南》中的 Amazon EC2 執行個體存放](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)區。 *Amazon EC2 *  
有效值：`included` \$1 `excluded` \$1 `required`  
預設：`included`

**localStorageType**  
指示所需的本機儲存體類型。  
+ 針對具有硬碟 (HDD) 儲存體的執行個體類型，請指定 `hdd`。
+ 針對具有固態硬碟 (SSD) 儲存體的執行個體類型，請指定 `ssd`。
有效值：`hdd` \$1 `ssd`  
預設：任何本機儲存類型。

## 帳單和購買選項
<a name="managed-instances-instance-billing-and-purchase-options"></a>

Amazon ECS 受管執行個體支援多種功能，可協助最佳化容器化工作負載的成本：
+ *Savings Plans (SPs)*：Amazon ECS 受管執行個體受益於您為任務使用的執行個體類型購買的 Savings Plans。不需任何其他設定。
+ *預留執行個體 (RI)*：Amazon ECS 受管執行個體任務可以從您為任務使用的執行個體類型購買的 RI 中受益。不需任何其他設定。
+ *Spot 執行個體*：您可以透過設定 將 Amazon ECS 受管執行個體容量提供者設定為使用 EC2 Spot 執行個體 `capacityOptionType=Spot`
+ *容量保留*：您可以透過設定`capacityOptionType=Reserved`並提供容量保留群組，將 Amazon ECS 受管執行個體容量提供者設定為使用您的 EC2 容量保留。 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-cr-group.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-cr-group.html)您也可以指定下列保留偏好設定：使用 `reservations-only` 來確保執行個體僅以預留容量啟動，以達到最大可預測性、`reservations-first`偏好保留，同時在需要時保持恢復隨需容量的彈性，或`reservations-excluded`防止您的容量提供者同時使用保留。

# Amazon ECS 受管執行個體的執行個體選擇最佳實務
<a name="managed-instances-instance-selection-best-practices"></a>

為 Amazon ECS 受管執行個體工作負載選取正確的執行個體組態，對於最佳化效能、成本與資源使用率至關重要。Amazon ECS 提供靈活的執行個體選擇選項，讓您可以平衡應用程式需求與成本效益。下列最佳實務可協助您就容器化工作負載的執行個體選擇作出明智的決策。

1. 使用預設執行個體選取

   當您未指定 時`instanceRequirements`，Amazon ECS 會選擇符合下列任務定義和服務參數需求的最具成本效益的執行個體：

   任務定義
   + operatingSystemFamily
   + cpuArchitecture
   + cpu
   + memory

   服務定義
   + placementConstraints
   + placementStrategy

1. 針對大多數工作負載使用屬性型選取方法，以提供彈性並改善置放成功率

   屬性型執行個體選擇方法讓 Amazon ECS 可以從更廣泛的執行個體類型中進行選擇，以符合您指定的需求。這種方法讓 Amazon ECS 可以選取啟動時最具成本效益的執行個體，從而提高成功置放任務的可能性並取得更好的成本最佳化效果。

1. 僅在應用程式有特定硬體需求時，才使用特定的執行個體類型

   為需要特定硬體功能 (例如 GPU 加速、高頻率處理器或專用聯網功能) 的工作負載保留特定執行個體類型選取方法。對於一般用途應用程式，屬性型選取通常具有更好的彈性與成本最佳化效果。

1. 選擇平衡的資源，避免過度佈建與不必要的成本

   選取最符合應用程式的 CPU 與記憶體需求的執行個體組態。避免大量過度佈建資源，因為這會導致成本增加且效率降低。使用監控資料來了解您的實際資源使用率模式，並相應地調整執行個體選擇。

1. 針對具有不同工作負載的應用程式混合使用執行個體類型，以平衡效能與成本

   對於具有不同效能需求或不同工作負載模式的應用程式，請考慮使用具有不同執行個體組態的多個容量提供者。此方法可讓您針對應用程式的不同元件使用適當的執行個體類型來最佳化成本，同時視需要維持效能。

1. 使用以 設定的 Amazon ECS 受管執行個體容量提供者時`capacityOptionType=Reserved`，請注意 ECS 服務使用預設部署組態 `minimumHealthyPercent=100%`和 `maximumPercent=200%`，這表示 ECS 部署會在停止舊任務之前嘗試啟動新任務，並暫時需要高達 200% 的穩定狀態容量。如果您的服務在穩定狀態下使用 EC2 容量預留中的所有可用容量，部署將會失敗，因為在部署程序期間沒有額外的容量可用於啟動新任務。若要避免這種情況，`minimumHealthyPercent`請將 設定為低於 100% （例如 75%)，並考慮`maximumPercent`將 設定為 100%，以確保服務在啟動新的任務之前停止任務，允許部署在啟動替代任務之前釋放容量，以成功完成部署。此外，請考慮定期監控容量使用率，以維持保留空間，以適應部署並處理流量激增。

# Amazon ECS 受管執行個體容器映像提取行為
<a name="managed-instance-pull-behavior"></a>

容器啟動所需的時間會因底層容器映像而異。例如，比起各自的精簡版本 (Debian-slim、Ubuntu-slim 和 Amazon2-slim) 或較小的基礎映像 (Alpine)，容器中執行的更多服務可能需要更長的時間才能啟動。

當 Amazon ECS 啟動在 Amazon ECS 受管執行個體上執行的任務時，Amazon ECS 只有在相同容器執行個體上先前的任務未提取映像，或是自動映像清除程序移除快取映像時，才會從遠端提取映像。否則，會使用 Amazon ECS 受管執行個體上的快取映像。這可確保不會發生非必要的映像提取。

# Amazon ECS 受管執行個體中的修補
<a name="managed-instances-patching"></a>

在 Amazon ECS 受管執行個體中，修補是一項重要的維護程序，其中 AWS 會自動管理和更新受管容器執行個體上的軟體，以確保安全性和合規性，同時透過受控且可設定的程序維持工作負載可用性。

## 執行個體生命週期
<a name="managed-instances-lifecycle"></a>

依預設，Amazon ECS 受管容器執行個體的標準化運作生命週期為 14 至 21 天。Amazon ECS 會在執行個體啟動後第 14 天啟動優雅的工作負載耗盡，並最晚在第 21 天最終終止。Amazon ECS 在特定情況下適應提早耗盡：
+ 偵測軟體上的安全漏洞
+ 硬體運作狀態降級
+ 遵守客戶設定的事件時段

此方法可維持系統合規性，同時符合客戶定義的維護需求。

## 事件時段與維護排程
<a name="managed-instances-event-windows"></a>

AWS 透過監控節點建立時間戳記和維護排程的自動化背景程序來管理受管容器執行個體生命週期。執行個體啟動時， 會 AWS 設定預設的 14 天耗盡排程，並評估任何客戶設定的事件時段。

您可以透過設定事件時段來排程 Amazon ECS 受管執行個體的維護活動。您可以使用執行個體 IDs 或執行個體標籤，將一或多個 Amazon ECS 受管執行個體與事件時段建立關聯。使用特定值標記事件時段時，Amazon ECS 會將這些標籤映射至對應叢集的對應 Amazon ECS 受管執行個體，並盡最大努力在定義的期間內排程執行個體維護。

如需事件時段的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的為影響 Amazon EC2 執行個體的排程事件建立自訂事件時段](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/event-windows.html)。 *Amazon EC2 *

如果事件時段存在， 會 AWS 調整耗盡排程以符合這些時段，這可能會導致比預設的 14 天期間更早耗盡，以符合指定的事件時段。事件時段修改僅會影響新啟動的受管容器執行個體，從而確保預測性維護的排程。

在排程的耗盡時間之前，Amazon ECS 會根據客戶的組態，在受管容器執行個體上繼續正常的任務置放操作。

## 維護序列
<a name="managed-instances-maintenance-sequence"></a>

在指定的維護時間，Amazon ECS 會透過調用 `UpdateContainerInstancesState` API 來啟動優雅的工作負載耗盡，開始其維護序列。在優雅終止期間，Amazon ECS 會嘗試停止標記為耗盡的執行個體上的工作負載。

Amazon ECS 會對服務任務採用先啟動後停止的策略 (或根據 Amazon ECS 服務組態)，確保在停止現有任務之前啟動替代任務，將服務中斷降至最低。在此程序中，Amazon ECS 服務會遵守所有服務部署組態，同時繼續進行耗盡嘗試，直到執行個體啟動後第 21 天為止。

如果到第 21 天耗盡仍未完成，Amazon ECS 會執行 `DeregisterContainerInstance` API 來停止受管容器執行個體及其剩餘的工作負載，以維持合規性並使用最新的軟體修補受管執行個體。

# Amazon ECS 受管執行個體的安全考量
<a name="managed-instances-security"></a>

 Amazon ECS 受管執行個體提供全受管容器運算體驗，可讓您在特定 Amazon EC2 執行個體類型上執行工作負載，同時將安全性交由 AWS負責。本主題介紹了使用 Amazon ECS 受管執行個體時的安全模型、功能與考量。

## 安全模型
<a name="managed-instances-security-model"></a>

 Amazon ECS 受管執行個體會實作全面的安全模型，在彈性與保護之間取得平衡：
+ **AWS受管基礎設施** - AWS 控制受管執行個體的生命週期，並處理安全修補，消除人為錯誤和竄改的可能性。
+ **無管理存取** – 安全模型已鎖定，並禁止對受管執行個體進行管理存取。
+ **多任務置放** – 依預設，Amazon ECS 受管執行個體會將多個任務置放在單一執行個體上，以最佳化成本與使用率。相較於 Fargate，這會放寬工作負載隔離限制。
+ **資料隔離** - 雖然 AWS 控制執行個體生命週期和任務置放，但 AWS 無法登入受管執行個體或存取客戶資料。

## 安全性功能
<a name="managed-instances-security-features"></a>

 Amazon ECS 受管執行個體包含數個內建的安全功能，旨在保護工作負載並維持良好的安全狀態。這些功能涵蓋自動化安全修補到在需要時支援特權 Linux 功能。

### 安全最佳實務
<a name="managed-instances-security-best-practices"></a>

 受管執行個體是根據 AWS 安全最佳實務設定，包括：
+ **無 SSH 存取** – 遠端 Shell 存取已停用，以防止未經授權的存取。
+ **不可變的根檔案系統** – 根檔案系統無法修改，從而可確保系統完整性。
+ **核心層級強制性存取控制** – SELinux 在核心層級提供額外的安全性強制執行。

### 自動安全修補
<a name="managed-instances-security-patching"></a>

 Amazon ECS 受管執行個體會透過自動化修補，協助改善工作負載的安全狀態：
+ **定期安全性更新** - 執行個體會根據您設定的維護時段 AWS，定期使用最新的安全性修補程式進行更新。
+ **執行個體生命週期有限** – 執行中的執行個體的生命週期上限限制為 14 天，以確保應用程式在具有適當設定與最新安全性修補程式的執行個體上執行。
+ **維護時段控制** – 您可以使用 Amazon EC2 事件時段功能來指定 Amazon ECS 何時應以修補後的執行個體取代原執行個體。

### 特權 Linux 功能
<a name="managed-instances-privileged-capabilities"></a>

 Amazon ECS 受管執行個體支援需要更高 Linux 權限的軟體，從而啟用進階監控與安全性解決方案：
+ **支援的功能** – 您可以選擇使用所有特權 Linux 功能，包括 `CAP_NET_ADMIN`、`CAP_SYS_ADMIN` 與 `CAP_BPF`。
+ **熱門解決方案** – 這讓您能夠執行熱門的網路監控與可觀測性解決方案，例如 Wireshark 與 Datadog。
+ **需要明確組態** – 您必須明確設定 Amazon ECS 受管執行個體容量提供者，以啟用特權 Linux 功能，因為它可能會對您的應用程式造成額外的安全風險。

**重要**  
 啟用特權 Linux 功能可能會讓您的任務面臨額外的安全風險。請僅在應用程式需要時才啟用這些功能，並確保您了解安全性影響。

## 合規與法規支援
<a name="managed-instances-compliance"></a>

 Amazon ECS 受管執行個體會維持與 Amazon ECS 相同的合規狀態：
+ **合規計劃** - Amazon ECS 受 AWS 管執行個體的範圍與 Amazon ECS 相同，包括 PCI-DSS、HIPAA 和 FedRAMP。
+ **FIPS 端點** - Amazon ECS 受管執行個體遵守您的帳戶層級設定，以便在 AWS 區域中使用 FIPS 端點，以協助達成 FedRAMP 合規。
+ **客戶自管金鑰** – 它支援實現合規所需的安全功能，例如用於加密的客戶自管金鑰。

## Amazon ECS 受管執行個體 FIPS-140 考量
<a name="managed-instances-fips-considerations"></a>

在 Amazon ECS 受管執行個體上使用 FIPS-140 合規時，請考慮下列事項：
+ FIPS-140-compliant受管執行個體 AMIs 僅適用於 AWS GovCloud (US) 區域。
+ Amazon ECS 受管執行個體支援 FIPS-140-3
+ 區域預設會啟用 FIPS-140 AWS GovCloud (US) 合規。如果您需要在沒有 FIPS 合規的情況下執行工作負載，請在受管執行個體容量提供者組態中關閉 FIPS 合規。
+ 任務`cpuArchitecture`的 必須符合 FIPS-140 `X86_64` 合規。

## 在 Amazon ECS 受管執行個體上停用 FIPS
<a name="managed-instances-use-fips"></a>

根據預設， AWS GovCloud (US) 區域中的 Amazon ECS 受管執行個體容量提供者會啟動符合 FIPS 標準的 AMIs。在建立新的 Amazon ECS 受管執行個體容量提供者時，您可以選擇停用 FIPS-140 合規。請依照下列步驟建立沒有 FIPS 合規的新容量提供者。

1. 在容量提供者上停用 FIPS-140 合規。

   ```
   aws ecs create-capacity-provider \
       --cluster cluster-name \
       --name capacity-provider-name \
       --managed-instances-provider '{
           "infrastructureRoleArn": "infrastructure-role-arn",
           "instanceLaunchTemplate": {
               "ec2InstanceProfileArn": "instance-profile-arn",
               "fipsEnabled": false,
               "networkConfiguration": {
                   "subnets": ["subnet-id"],
                   "securityGroups": ["security-group-id"]
               }
           }
       }'
   ```

1. 您可以選擇性地使用 ECS Exec 執行下列命令，以驗證容量提供者的 FIPS-140 合規狀態。

   將 *cluster-name* 取代為叢集名稱，將 *task-id* 取代為任務的 ID 或 ARN，並將 *container-name* 取代為任務中要執行命令的容器名稱。

   傳回值 "1" 表示您正在使用 FIPS。

   ```
   aws ecs execute-command \
       --cluster cluster-name \
       --task task-id \
       --container container-name \
       --interactive \
       --command "cat /proc/sys/crypto/fips_enabled"
   ```

## 安全考量
<a name="managed-instances-security-considerations"></a>

 使用 Amazon ECS 受管執行個體時，需要了解和規劃數個重要的安全考量。這些考量可協助您就工作負載架構與安全需求作出明智的決策。

### 多任務安全模型
<a name="managed-instances-multi-task-security"></a>

 Amazon ECS 受管執行個體中的預設多任務置放模型與 Fargate 的單一任務隔離不同：
+ **共用執行個體資源** – 多項任務在同一執行個體上執行，可能會讓任務暴露於在同一個執行個體上或同一個 ECS 叢集中執行之其他任務所存在的漏洞。
+ **單一任務選項** – 您可以將 Amazon ECS 受管執行個體設定為對需要具有虛擬機器層級安全隔離界限之預設 Fargate 安全模型的客戶使用單一任務模式。
+ **成本與安全權衡** – 多任務模式可實現成本最佳化與更快的任務啟動時間，而單一任務模式可提供更強大的隔離。

### 處理執行個體中斷問題
<a name="managed-instances-interruption-handling"></a>

 使用 Amazon ECS 受管執行個體時，請務必將應用程式設計為能夠容忍中斷情況：
+ **中斷容忍** – 將 Amazon ECS 受管執行個體與可容忍基礎服務或任務中斷的應用程式搭配使用。
+ **服務型工作負載** – 使用 Amazon ECS 服務進行自動任務取代，或在獨立任務上執行受控制且持續時間限制不超過 14 天的工作負載。
+ **優雅關閉** – 設定任務關閉寬限期以控制中斷產生的影響。

### 資料存取與隱私
<a name="managed-instances-data-access"></a>

 Amazon ECS 受管執行個體會維持嚴格的資料存取控制：
+ **無客戶資料存取** - 雖然 AWS 控制受管執行個體的生命週期和執行個體上的任務置放， AWS 但 無法登入受管執行個體或存取客戶資料。
+ **僅限 指標和日誌** - 僅 AWS 擷取提供 Amazon ECS 受管執行個體功能所需的指標和相關日誌。
+ **鎖定的安全模型** – 安全模型禁止管理存取，從而可消除人為錯誤與竄改的可能性。

## 安全最佳實務
<a name="managed-instances-security-best-practices-recommendations"></a>

 使用 Amazon ECS 受管執行個體時，請遵循下列最佳實務：
+ **評估安全模型** – 根據您的安全需求，謹慎地決定採用 Amazon ECS 受管執行個體，特別是在多任務置放模型方面。
+ **視需要使用單一任務模式** – 如果您的工作負載需要更強大的隔離，請將 Amazon ECS 受管執行個體設定為使用單一任務模式。
+ **將特權功能降至最低** – 請僅在絕對必要且了解相關安全風險時，才啟用特權 Linux 功能。
+ **制定中斷計畫** – 將應用程式設計為以優雅的方式處理執行個體取代，尤其是考量 14 天的執行個體生命週期上限。
+ **設定維護時段** – 使用 EC2 事件時段來控制執行個體取代的時間，將對工作負載的影響降至最低。
+ **監控與稽核** – 定期檢閱您的 Amazon ECS 受管執行個體組態，並監控任何與安全性相關的事件或變更。

# 啟用 Amazon ECS 受管執行個體的 VPC 加密控制
<a name="managed-instances-vpc-encryption"></a>

Amazon ECS 受管執行個體支援 VPC 加密控制，這是一種安全與合規功能，可提供集中式控制，以監控和強制執行傳輸中所有流量的加密，而這些流量會跨區域中VPCs。當子網路上啟用 VPC 加密控制時，您可以指定支援 Amazon ECS 受管執行個體自訂容量提供者傳輸中加密的執行個體類型，以確保 Amazon ECS 受管執行個體工作負載在傳輸中以加密執行。

## 先決條件
<a name="managed-instances-vpc-encryption-prerequisites"></a>

開始之前，您需要：
+ 在子網路上啟用傳輸中加密的 VPC。如需詳細資訊，請參閱 [VPC 加密控制文件](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-encryption-controls.html)。
+ Amazon ECS 受管執行個體自訂容量提供者。如需詳細資訊，請參閱[Amazon ECS 受管執行個體的架構](ManagedInstances.md)。

## 識別相容的執行個體類型
<a name="managed-instances-vpc-encryption-compatible-types"></a>

Amazon EC2 執行個體類型必須符合兩個要求：

1. **支援傳輸中的 VPC 加密** - 使用以下 AWS CLI 命令列出支援傳輸中加密的 Amazon EC2 執行個體類型：

   ```
   aws ec2 describe-instance-types \
       --filters Name=network-info.encryption-in-transit-supported,Values=true \
       --query "InstanceTypes[*].[InstanceType]" \
       --output text | sort
   ```

1. **Amazon ECS 受管執行個體支援** - Amazon ECS 受管執行個體支援的所有 Amazon EC2 執行個體類型都記錄在 中[Amazon ECS 受管執行個體的執行個體類型](managed-instances-instance-types.md)。

如果您有其他需求 （例如特定的 CPU、記憶體或架構需求），請根據您的工作負載需求進一步篩選相容的執行個體類型。

## 建立支援 VPC 加密的叢集
<a name="managed-instances-vpc-encryption-cluster-config"></a>

若要為傳輸中的 VPC 加密設定 Amazon ECS 受管執行個體：

1. 建立新的叢集，並選取基礎設施的 **Fargate 和受管執行個體**。

1. 選取**使用自訂 – 進階**以存取其他組態參數。

1. 在**允許的執行個體類型**中，僅新增支援傳輸中 VPC 加密的特定執行個體類型。

以這種方式設定時，Amazon ECS 受管執行個體只會啟動支援傳輸中 VPC 加密的 Amazon EC2 執行個體類型。

## 考量事項
<a name="managed-instances-vpc-encryption-considerations"></a>
+ **爆量效能執行個體** - T3, T3a 和 T4g 執行個體類型不支援傳輸中的 VPC 加密，且無法在強制執行模式下啟用加密控制的子網路中使用。
+ **模式轉換** - 只有在所有執行中的執行個體都支援傳輸中的 VPC 加密時，您才能將 VPC 子網路從監控模式轉換至強制執行模式。
+ **任務啟動失敗** - 在強制執行模式中，如果您指定不支援傳輸中加密的執行個體類型，任務將無法啟動。

## 疑難排解
<a name="managed-instances-vpc-encryption-troubleshooting"></a>

強制執行模式中的任務啟動失敗  
如果任務無法啟動，請使用上述提供的 AWS CLI 命令，驗證所有指定的執行個體類型是否支援傳輸中的 VPC 加密。

無法轉換為強制執行模式  
使用 主控台或 `GetVpcResourcesBlockingEncryptionEnforcement`命令來識別未強制執行傳輸中加密的資源。

如需 VPC 加密控制的詳細資訊，請參閱 [VPC 加密控制文件](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-encryption-controls.html)。

# Amazon ECS 受管執行個體基礎結構最佳化
<a name="managed-instances-infrastructure-optimization"></a>

Amazon ECS 受管執行個體會根據您的容量提供者組態和目前的工作負載需求，自動佈建大小正確的 EC2 執行個體，確保您的容器化應用程式從部署時就擁有適當的運算資源。隨著應用程式流量模式的演進和工作負載需求隨時間變化，Amazon ECS 受管執行個體會透過智慧調整執行個體大小以符合目前需求、主動取代偏離最佳組態的執行個體，以及動態平衡成本效益、應用程式效能和系統可靠性，來持續監控和最佳化您的基礎設施。此資源管理系統無需任何手動介入即可運作，可降低基礎設施成本，同時維持應用程式的高可用性。

基礎結構最佳化具有下列優點：
+ 成本最佳化 – 透過最大化資源使用率並消除閒置容量來降低基礎結構成本
+ 效能改善 – 基於資源需求與效能特性來最佳化工作負載置放
+ 操作簡單 – 自動作出複雜的資源管理決策，而無需人工介入
+ 可靠性增強 – 透過智慧型工作負載分佈與運作狀態監控來維持高可用性

Amazon ECS 受管執行個體會執行兩種類型的基礎設施最佳化，以最大化效率並降低成本：

## 閒置執行個體偵測
<a name="idle-instance-detection"></a>

識別和移除沒有執行中任務的 EC2 執行個體，消除未使用的容量中不必要的基礎設施成本。偵測到閒置執行個體時，最佳化程序會將容器執行個體標記為 DEREGISTERING，這會啟動可安全終止基礎 EC2 執行個體的清除序列。

## 未充分利用的執行個體偵測
<a name="underutilized-instance-detection"></a>

分析跨執行個體的任務分佈，以識別更好的資源配置機會。當任務在多個執行個體之間以次最佳化方式執行時，Amazon ECS 受管執行個體會將工作負載合併到較少、更有效率的執行個體，同時降低整體成本，同時維持效能。最佳化程序會將未充分利用的容器執行個體標記為 DRAINING，這會觸發任務取代，將工作負載移至現有或更有效率的新執行個體。安全遷移所有任務後，執行個體會轉換為 DEREGISTERING 狀態並清除。此最佳化適用於執行服務任務的執行個體，並透過遵守服務的最低和最高任務限制、遵守start-before-stop部署行為，以及在整個耗盡過程中維護任何任務保護設定，以確保安全整合。執行獨立任務的執行個體不會考慮進行最佳化，因為 ECS 受管執行個體不會取代獨立任務。

這些最佳化可協同運作，確保您的基礎設施持續適應實際的工作負載需求，自動消除浪費並改善資源使用率，而不會影響應用程式的可用性。這兩種機制都使用事件驅動型監控來回應任務和執行個體生命週期事件，以即時識別最佳化機會。Amazon ECS 受管執行個體會偵測容器執行個體上最後一個任務何時停止，指出成本最佳化的潛在閒置條件。對於未充分利用的執行個體，任何任務停止或新執行個體啟動都會觸發分析，以識別工作負載整合的機會並改善資源效率。

## ScaleInAfter
<a name="scale-in-after"></a>

這兩個基礎設施最佳化都尋找終止執行中執行個體的機會，以改善使用率並降低成本。您可以使用 Amazon ECS 受管執行個體容量提供者設定中的 ScaleInAfter 組態來控制這些動作的時間，這同時適用於閒置和未充分利用的執行個體。ScaleInAfter 可讓您指定執行個體閒置或未充分利用與 Amazon ECS 受管執行個體開始最佳化基礎設施之間的延遲，以秒為單位。您可以設定 0 到 3600 秒之間的延遲。您也可以指定 -1 來停用基礎設施最佳化。

**閒置執行個體**  
+ ECS 會在最後一個任務停止後等待指定的持續時間，再取消註冊執行個體
+ 如果新的任務在等待期間啟動，則執行個體不會再被視為閒置，並取消終止

**未充分利用的執行個體**  
+ ECS 會在任務停止事件導致執行個體使用率不足後等待指定的持續時間，再耗盡執行個體
+ 如果在等待期間啟動新任務或在特定執行個體上停止現有任務，計時器會從最近的任務停止或新任務建立時間重設，Amazon ECS 受管執行個體會重新評估效率低下，並視需要在新的等待期間到期後採取動作

此組態為選擇性。未指定時，ECS 受管執行個體會根據 ECS 受管執行個體預設組態自動決定最佳時間。

# 從 遷移 AWS Fargate 至 Amazon ECS 受管執行個體
<a name="migrate-fargate-to-managed-instances"></a>

您可以將現有的工作負載從 Fargate 遷移至 Amazon ECS 受管執行個體。此遷移可讓您存取完整的 Amazon EC2 執行個體類型、容量保留和進階功能，同時維護 AWS受管基礎設施。

## 遷移考量事項
<a name="migration-considerations"></a>

從 Fargate 遷移至 Amazon ECS 受管執行個體時，請記住下列考量事項：

任務相容性  
為 Fargate 設定的現有任務定義主要與 Amazon ECS 受管執行個體相容。如需任務定義差異的詳細資訊，請參閱 [Amazon ECS 受管執行個體的 Amazon ECS 任務定義差異](managed-instances-tasks-services.md)。

安全模型變更  
Amazon ECS 受管執行個體預設允許每個執行個體執行多項任務。如果您的工作負載需要更強大的隔離，請考量啟用單一任務模式。

執行個體生命週期  
Amazon ECS 受管執行個體的生命週期上限為 14 天。請制定任務替代計畫，並使用 Amazon ECS 服務進行自動任務管理。

定價變更  
使用 Amazon ECS 受管執行個體時，您需要支付整個執行個體的費用加上管理費，而不是像 Fargate 一樣按每項任務資源付費。

維護時段  
使用 Amazon EC2 事件時段設定維護時段，以控制何時取代 Amazon ECS 受管執行個體進行修補。

## 先決條件
<a name="migration-prerequisites"></a>

遷移至 Amazon ECS 受管執行個體之前，請確定您：
+ 具有在平台版本 1.4.0 或更新版本上執行的現有 Fargate 任務
+ 您有 Amazon ECS 受管執行個體所需的 IAM 角色。其中包含：
  + **基礎設施角色** - 允許 Amazon ECS 代表您呼叫 AWS 服務，以管理 Amazon ECS 受管執行個體基礎設施。

    如需詳細資訊，請參閱[Amazon ECS 基礎結構 IAM 角色](infrastructure_IAM_role.md)。
  + **執行個體設定檔** – 為在受管執行個體上執行的 Amazon ECS 容器代理程式與 Docker 常駐程式提供許可。

    如需詳細資訊，請參閱[Amazon ECS 受管執行個體執行個體設定檔](managed-instances-instance-profile.md)。
+ 了解 Fargate 與 Amazon ECS 受管執行個體之間的安全模型差異

**重要**  
Amazon ECS 受管執行個體使用與 Fargate 不同的安全模型。依預設，多個任務可以在同一個執行個體上執行，這可能會讓任務暴露於其他任務所存在的漏洞。遷移之前，請先檢閱您的安全性需求。

## 步驟 1：更新叢集以使用 Amazon ECS 受管執行個體
<a name="update-to-managed-instances"></a>

建立容量提供者。使用 Amazon ECS 受管執行個體建立的容量提供者只能在指定的叢集內使用。

如需詳細資訊，請參閱[為 Amazon ECS 受管執行個體建立容量提供者](create-capacity-provider-managed-instances.md)。

## 步驟 2：更新任務定義以取得 Amazon ECS 受管執行個體功能
<a name="update-task-def"></a>

更新任務定義，使其具有 Amazon ECS 受管執行個體所需的功能。

如需詳細資訊，請參閱[使用主控台更新 Amazon ECS 任務定義](update-task-definition-console-v2.md)。

## 步驟 3：更新服務以使用 Amazon ECS 受管執行個體容量提供者
<a name="migrate-service"></a>

更新您現有的 Amazon ECS 服務，以使用 Amazon ECS 受管執行個體容量提供者。

如需詳細資訊，請參閱[更新 Amazon ECS 服務以使用容量提供者](update-service-managed-instances.md)。

## 步驟 4：遷移獨立任務
<a name="migrate-standalone-task"></a>

對於獨立任務，請在執行任務時指定 Amazon ECS 受管執行個體容量提供者。

如需詳細資訊，請參閱[將應用程式作為 Amazon ECS 任務執行](standalone-task-create.md)。

# 從 Amazon EC2 遷移至 Amazon ECS 受管執行個體
<a name="migrate-ec2-to-managed-instances"></a>

將現有工作負載從 Amazon EC2 遷移至 Amazon ECS 受管執行個體。此遷移可讓您存取完整的 Amazon EC2 執行個體類型、容量保留和進階功能，同時維護 AWS受管基礎設施。

## 遷移考量事項
<a name="ec2-migration-considerations"></a>

從 Amazon EC2 遷移至 Amazon ECS 受管執行個體時，請記住下列考量事項：

任務相容性  
為 Amazon EC2 設定的現有任務定義主要與 Amazon ECS 受管執行個體相容。如需任務定義差異的清單，請參閱 [Amazon ECS 受管執行個體的 Amazon ECS 任務定義差異](managed-instances-tasks-services.md)。

安全模型變更  
Amazon ECS 受管執行個體預設允許每個執行個體執行多項任務。如果您的工作負載需要更強大的隔離，請考量啟用單一任務模式。

執行個體生命週期  
Amazon ECS 受管執行個體的生命週期上限為 14 天。請制定任務替代計畫，並使用 Amazon ECS 服務進行自動任務管理。

定價變更  
使用 Amazon ECS 受管執行個體時，您需要支付整個執行個體的費用加上管理費用，以及 AWS 處理基礎設施管理開銷。

維護時段  
使用 Amazon EC2 事件時段設定維護時段，以控制何時取代 Amazon ECS 受管執行個體進行修補。

## 先決條件
<a name="ec2-migration-prerequisites"></a>

遷移至 Amazon ECS 受管執行個體之前，請確定您：
+ 您有 Amazon ECS 受管執行個體所需的 IAM 角色。其中包含：
  + **基礎設施角色** - 允許 Amazon ECS 代表您呼叫 AWS 服務，以管理 Amazon ECS 受管執行個體基礎設施。

    如需詳細資訊，請參閱[Amazon ECS 基礎結構 IAM 角色](infrastructure_IAM_role.md)。
  + **執行個體設定檔** – 為在受管執行個體上執行的 Amazon ECS 容器代理程式與 Docker 常駐程式提供許可。

    如需詳細資訊，請參閱[Amazon ECS 受管執行個體執行個體設定檔](managed-instances-instance-profile.md)。
+ 了解 Amazon EC2 與 Amazon ECS 受管執行個體之間的安全模型差異

## 步驟 1：更新叢集以使用 Amazon ECS 受管執行個體
<a name="ec2-update-to-managed-instances"></a>

建立容量提供者。使用 Amazon ECS 受管執行個體建立的容量提供者只能在指定的叢集內使用。

如需詳細資訊，請參閱[為 Amazon ECS 受管執行個體建立容量提供者](create-capacity-provider-managed-instances.md)。

## 步驟 2：更新任務定義以取得 Amazon ECS 受管執行個體功能
<a name="ec2-update-task-def"></a>

更新任務定義，使其具有 Amazon ECS 受管執行個體所需的功能。

如需詳細資訊，請參閱[使用主控台更新 Amazon ECS 任務定義](update-task-definition-console-v2.md)。

## 步驟 3：更新服務以使用 Amazon ECS 受管執行個體容量提供者
<a name="ec2-migrate-service"></a>

更新您現有的 Amazon ECS 服務，以使用 Amazon ECS 受管執行個體容量提供者。

如需詳細資訊，請參閱[更新 Amazon ECS 服務以使用容量提供者](update-service-managed-instances.md)。

## 步驟 4：遷移獨立任務
<a name="ec2-migrate-standalone-task"></a>

對於獨立任務，請在執行任務時指定 Amazon ECS 受管執行個體容量提供者。

如需詳細資訊，請參閱[將應用程式作為 Amazon ECS 任務執行](standalone-task-create.md)。