

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

# Amazon ECS 介面 VPC 端點 (AWS PrivateLink)
<a name="vpc-endpoints"></a>

透過設定 Amazon ECS 以使用介面 VPC 端點，可提升 VPC 的安全狀態。介面端點採用一種技術 AWS PrivateLink，可讓您使用私有 IP 地址私下存取 Amazon ECS APIs。 AWS PrivateLink 會限制 VPC 和 Amazon ECS 與 Amazon 網路之間的所有網路流量。您不需要網際網路閘道、NAT 裝置或虛擬私有閘道。

如需 AWS PrivateLink 和 VPC 端點的詳細資訊，請參閱《Amazon [VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html#concepts-vpc-endpoints)》中的 VPC 端點。 **

## 考量事項
<a name="ecs-vpc-endpoint-considerations"></a>

### 自 2023 年 12 月 23 日新增區域的端點考量事項
<a name="fargate-ecs-vpc-endpoint-region-considerations"></a>

在您設定 Amazon ECS 的介面 VPC 端點之前，請注意以下幾點考量：
+ 您必須具有下列區域特定的 VPC 端點：
**注意**  
如果您未設定所有端點，流量會經過公有端點，而不是 VPC 端點。
  + `com.amazonaws.region.ecs-agent`
  + `com.amazonaws.region.ecs-telemetry`
  + `com.amazonaws.region.ecs`

  例如，加拿大西部 (卡加利) (ca-west-1) 區域需要下列 VPC 端點：
  + `com.amazonaws.ca-west-1.ecs-agent`
  + `com.amazonaws.ca-west-1.ecs-telemetry`
  + `com.amazonaws.ca-west-1.ecs`
+ 當您使用範本在新區域中建立 AWS 資源，且範本已從 2023 年 12 月 23 日之前引進的 區域複製時，取決於複製區域，請執行下列其中一項操作。

  例如，複製來源區域是美國東部 (維吉尼亞北部) (us-east-1)。複製目標區域是加拿大西部 (卡加利) (ca-west-1)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/vpc-endpoints.html)

### Fargate 的 Amazon ECS VPC 端點的考量事項
<a name="fargate-ecs-vpc-endpoint-considerations"></a>

當 Fargate 任務所部署的 VPC 內已存在 `ecr.dkr` 與 `ecr.api` 的 VPC 端點時，Fargate 任務會使用該端點。如果沒有 VPC 端點，則會使用 Fargate 介面。

在您設定 Amazon ECS 的介面 VPC 端點之前，請注意以下幾點考量：
+ 使用 Fargate 的任務不需要 Amazon ECS 的介面 VPC 端點，但您可能需要以下要點中所述的 Amazon ECR、Secrets Manager 或 Amazon CloudWatch Logs 的介面 VPC 端點。
  + 若要讓任務從 Amazon ECR 中提取私有映像，請務必為 Amazon ECR 建立介面 VPC 端點。如需詳細資訊，請參閱 *《Amazon Elastic Container Registry 使用者指南》*中的[介面 VPC 端點 (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html)。
**重要**  
如果您設定 Amazon ECR 以使用介面 VPC 端點，您就可以建立包含條件金鑰的任務執行角色，限制存取特定的 VPC 或 VPC 端點。如需詳細資訊，請參閱[Fargate 任務透過介面端點提取 Amazon ECR 映像的許可](task_execution_IAM_role.md#task-execution-ecr-conditionkeys)。
如果任務以純 IPv6 組態設定且使用 Amazon ECR 雙堆疊映像 URI，注意 Amazon ECR 不支援雙堆疊介面 VPC 端點。如需詳細資訊，請參閱 *Amazon Elastic Container Registry User Guide* 中的 [Getting started with making requests over IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started)。
  + 若要讓任務從 Secrets Manager 中提取敏感資料，您必須建立 Secrets Manager 的介面 VPC 端點。如需詳細資訊，請參閱 *《AWS Secrets Manager 使用者指南》*中的[搭配使用 Secrets Manager 與 VPC 端點](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)。
  + 如果 VPC 沒有網際網路閘道且任務使用的是 `awslogs` 日誌驅動程式來將日誌資訊傳送至 CloudWatch Logs，您必須為 CloudWatch Logs 建立介面 VPC 端點。如需詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南**》中的[使用 CloudWatch Events 搭配介面 VPC 端點](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html)。
+ VPC 端點目前不支援跨區域請求。請確保在計劃對 Amazon ECS 發出 API 呼叫的相同區域中建立端點。例如，假設您想在美國東部 (維吉尼亞北部) 執行任務。那麼，您必須在美國東部 (維吉尼亞北部) 建立 Amazon ECS VPC 端點。在任何其他區域建立的 Amazon ECS VPC 端點無法在美國東部 (維吉尼亞北部) 執行任務。
+ 透過 Amazon Route 53，VPC 端點僅支援 Amazon 提供的 DNS。如果您想要使用自己的 DNS，您可以使用條件式 DNS 轉送。如需詳細資訊，請參閱*《Amazon VPC 使用者指南》*中的 [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。
+ 連接到 VPC 端點的安全群組必須允許從 VPC 的私有子網路，透過 TCP 連接埠 443 傳入的連線。
+ Envoy 代理的 Service Connect (服務連接) 管理會使用 `com.amazonaws.region.ecs-agent` VPC 端點。當您未使用 VPC 端點時，Envoy 代理的 Service Connect (服務連接) 管理會使用該區域中的 `ecs-sc` 端點。如需每個區域中的 Amazon ECS 端點清單，請參閱 [Amazon ECS 端點和配額](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html)。

### EC2 的 Amazon ECS VPC 端點的考量事項
<a name="ec2-ecs-vpc-endpoint-considerations"></a>

在您設定 Amazon ECS 的介面 VPC 端點之前，請注意以下幾點考量：
+ 使用 EC2 的任務需要任務啟動所在的容器執行個體，才能執行 `1.25.1` 版或更新版本的 Amazon ECS 容器代理程式。如需詳細資訊，請參閱[Amazon ECS Linux 容器執行個體管理](manage-linux.md)。
+ 若要讓任務從 Secrets Manager 中提取敏感資料，您必須建立 Secrets Manager 的介面 VPC 端點。如需詳細資訊，請參閱 *《AWS Secrets Manager 使用者指南》*中的[搭配使用 Secrets Manager 與 VPC 端點](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)。
+ 如果 VPC 沒有網際網路閘道且任務使用的是 `awslogs` 日誌驅動程式來將日誌資訊傳送至 CloudWatch Logs，您必須為 CloudWatch Logs 建立介面 VPC 端點。如需詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南**》中的[使用 CloudWatch Events 搭配介面 VPC 端點](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html)。
+ VPC 端點目前不支援跨區域請求。請確保在計劃對 Amazon ECS 發出 API 呼叫的相同區域中建立端點。例如，假設您想在美國東部 (維吉尼亞北部) 執行任務。那麼，您必須在美國東部 (維吉尼亞北部) 建立 Amazon ECS VPC 端點。在任何其他區域建立的 Amazon ECS VPC 端點無法在美國東部 (維吉尼亞北部) 執行任務。
+ 透過 Amazon Route 53，VPC 端點僅支援 Amazon 提供的 DNS。如果您想要使用自己的 DNS，您可以使用條件式 DNS 轉送。如需詳細資訊，請參閱*《Amazon VPC 使用者指南》*中的 [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。
+ 連接到 VPC 端點的安全群組必須允許從 VPC 的私有子網路，透過 TCP 連接埠 443 傳入的連線。

## 了解 Amazon ECS 端點命名模式
<a name="ecs-endpoint-naming-patterns"></a>

必須了解的是，Amazon ECS 代理程式可能會向帶有編號字尾的端點發出請求，例如：
+ 代理程式端點的 `ecs-a-1.region.amazonaws.com`、`ecs-a-2.region.amazonaws.com` 等
+ 遙測端點的 `ecs-t-1.region.amazonaws.com`、`ecs-t-2.region.amazonaws.com` 等

此行為的成因在於 Amazon ECS 代理程式會透過 [DiscoverPollEndpoint](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DiscoverPollEndpoint.html) API 動態判定應連線的特定端點。如果 VPC 端點未正確處理這些帶編號的端點變體，即使您已針對基本名稱設定 VPC 端點，代理程式仍會回復使用公開端點。

### DiscoverPollEndpoint API 的角色
<a name="ecs-discoverpollendpoint-role"></a>

Amazon ECS 代理程式會透過 [DiscoverPollEndpoint](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DiscoverPollEndpoint.html) API 探索要用於輪詢任務的適當端點。當代理程式呼叫此 API 時，會收到可能包含編號字尾的特定端點 URL。為確保 VPC 端點正常運作，網路組態必須允許代理程式：

1. 存取 DiscoverPollEndpoint API

1. 連線至傳回的端點 URL，包括帶有編號字尾的端點 URL

如果正在疑難排解 VPC 端點連線問題，請確認代理程式可以同時連線至基本端點，以及 DiscoverPollEndpoint API 可能傳回的任何編號變化。

## 建立 Amazon ECS 的 VPC 端點
<a name="ecs-setting-up-vpc-create"></a>

若要為 Amazon ECS 服務建立 VPC 端點，請使用《*Amazon VPC 使用者指南*》中的[AWS 使用界面 VPC 端點程序存取](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)服務來建立下列端點。如果您的 VPC 中有現有的容器執行個體，您應該依照其列出順序建立端點。如果您計劃在建立 VPC 端點後才建立您的容器執行個體，則其順序並不重要。

**注意**  
如果您未設定所有端點，流量會經過公有端點，而不是 VPC 端點。  
當您建立端點時，Amazon ECS 也會為端點建立私有 DNS 名稱。例如，ecs-agent 為 `ecs-a.region.amazonaws.com`，ecs-telemetry 為 `ecs-t.region.amazonaws.com`。
+ `com.amazonaws.region.ecs-agent`
+ `com.amazonaws.region.ecs-telemetry`
+ `com.amazonaws.region.ecs`

**注意**  
*區域* 表示 Amazon ECS 支援之 AWS 區域的區域識別符，例如 `us-east-2` 表示美國東部 (俄亥俄) 區域。

`ecs-agent` 端點使用 `ecs:poll` API，而 `ecs-telemetry` 端點使用 `ecs:poll` 與 `ecs:StartTelemetrySession` API。

如果您擁有的現有任務是使用 EC2 啟動類型，在建立 VPC 端點後，每個容器執行個體需要挑選新的組態。若要這麼做，您必須擇一重新啟動每個容器執行個體或重新啟動每個容器執行個體上的 Amazon ECS 容器代理程式。若要重新開機容器代理程式，請執行下列動作：<a name="procedure_restart_ecs_agent"></a>

**若要重新啟動 Amazon ECS 容器代理程式**

1. 透過 SSH 登入您的容器執行個體。

1. 停用容器代理程式。

   ```
   sudo docker stop ecs-agent
   ```

1. 啟動容器代理程式。

   ```
   sudo docker start ecs-agent
   ```

在建立 VPC 端點並重新啟動每個容器執行個體上的 Amazon ECS 容器代理程式後，所有新啟動的任務都會挑選新的組態。

## 為 Amazon ECS 建立 VPC 端點政策
<a name="vpc-endpoint-policy"></a>

您可以將端點政策連接至控制 Amazon ECS 存取權的 VPC 端點。此政策會指定下列資訊：
+ 可執行動作的主體。
+ 可執行的動作。
+ 可供執行動作的資源。

如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的[使用 VPC 端點控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

**範例：Amazon ECS 動作的 VPC 端點政策**  
以下是 Amazon ECS 端點政策的範例。在連接至端點後，此政策會授予存取許可，以允許建立並列出叢集。`CreateCluster` 和 `ListClusters` 動作不接受任何資源，因此資源定義已針對所有資源設為 \$1。

```
{
   "Statement":[
    {
      "Principal":"*",
      "Effect": "Allow",
      "Action": [
        "ecs:CreateCluster",
        "ecs:ListClusters"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```