適用於 Fargate 啟動類型的 Amazon ECS 任務聯網選項 - Amazon Elastic Container Service

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

適用於 Fargate 啟動類型的 Amazon ECS 任務聯網選項

依預設,Fargate 上的每個 Amazon ECS 任務都會提供彈性網路介面 (ENI),具有主要私有 IP 地址。使用公有子網路時,您可以選擇性地將公有 IP 位址指派給任務的 ENI。如果您的 VPC 設定為雙堆疊模式,而且您使用具有 IPv6 CIDR 區塊的子網路,則您的工作 ENI 也會收到 IPv6 位址。任務在指定時間內只能有一個相關聯的 ENI。屬於同一個任務的容器也可透過 localhost 介面進行通訊。如需有關預設 VPC 的詳細資訊,請參閱《Amazon VPC 使用者指南》中的預設 VPC 和預設子網路

若要讓 Fargate 上的任務提取容器映像,任務必須有通往網際網路的路由。以下說明如何確認您的任務具有通往網際網路的路由。

  • 使用公有子網路時,您可將公有 IP 地址指派給任務 ENI。

  • 使用私人子網路時,子網路可以連結 NAT 閘道。

  • 使用 Amazon ECR 中託管的容器映像時,您可以將 Amazon ECR 設定為使用介面 VPC 端點,並且透過任務的私有 IPv4 位址進行映像提取 。如需詳細資訊,請參閱 《Amazon Elastic Container Registry 使用者指南》中的 Amazon ECR 介面 VPC 端點 (AWS PrivateLink)

因為每項任務都會取得自己的 ENI,所以您可以利用聯網功能,例如 VPC 流程日誌,以便您監控任務的進出流量。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的 VPC 流量日誌

您也可以利用 AWS PrivateLink. 您可以設定 VPC 私人雲端介面端點,以便透過私有 IP 地址存取 Amazon ECS API。 AWS PrivateLink 將 VPC 和 Amazon ECS 之間的所有網路流量限制在 Amazon 網路上。您不需要網際網路閘道、NAT 裝置或虛擬私有閘道。如需詳細資訊,請參閱《Amazon ECS 最佳實務指南》中的 AWS PrivateLink

如需如何搭配使用NetworkConfiguration資源的範例 AWS CloudFormation,請參閱使用獨立堆疊建立 Amazon ECS 資源

建立的 ENI 由 AWS Fargate全受管。此外,還有用來將許可授予 Fargate 的相關 IAM 政策。對於使用 Fargate 平台版本 1.4.0 或更新版本的任務,該任務會收到單一 ENI (也稱為任務 ENI),所有網路流量會流經 VPC 中的 ENI。此流量記錄在您的 VPC 流程日誌中。對於使用 Fargate 平台版本 1.3.0 和舊版的任務,除了任務 ENI 以外,該任務也會收到個別 Fargate 擁有的 ENI,其用於某些網路流量,這些流量不會顯示在 VPC 流程日誌中。以下資料表描述網路流量行為,以及每個平台版本所需的 IAM 政策。

動作

使用 Linux 平台版本 1.3.0 和更早版本時的流量流程

使用 Linux 平台版本 1.4.0 時的流量流程

使用 Windows 平台版本 1.0.0 時的流量流程

IAM 許可

擷取 Amazon ECR 登入憑證

Fargate 擁有的 ENI

任務 ENI

任務 ENI

任務執行 IAM 角色

映像提取

任務 ENI

任務 ENI

任務 ENI

任務執行 IAM 角色

透過日誌驅動程式傳送日誌

任務 ENI

任務 ENI

任務 ENI

任務執行 IAM 角色

透過 FireLens Amazon ECS 傳送日誌

任務 ENI

任務 ENI

任務 ENI

任務 IAM 角色

從 Secrets Manager 或 Systems Manager 中擷取秘密

Fargate 擁有的 ENI

任務 ENI

任務 ENI

任務執行 IAM 角色

Amazon EFS 檔案系統流量

任務 ENI

任務 ENI

任務 IAM 角色

應用程式流量

任務 ENI

任務 ENI

任務 ENI

任務 IAM 角色

考量事項

使用任務聯網時,請考量下列事項。

  • 需要 Amazon ECS 服務連結角色,才能為 Amazon ECS 提供代表您撥打其他 AWS 服務電話的許可。這個角色會在您建立叢集,或在 AWS Management Console中建立或更新服務時建立。如需詳細資訊,請參閱 使用 Amazon ECS 的服務連結角色。您也可以使用下列 AWS CLI 命令建立服務連結角色。

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • 在 VPC 上同時啟用 enableDnsHostnamesenableDnsSupport 選項時,Amazon ECS 會使用 Amazon 提供的 DNS 主機名稱填入任務的主機名稱。如果未啟用這些選項,任務的 DNS 主機名稱會設定為隨機的主機名稱。如需 VPC DNS 設定的詳細資訊,請參閱《Amazon VPC 使用者指南》中的搭配使用 DNS 與 VPC

  • 您為 awsVpcConfiguration 最多只能指定 16 個子網和 5 個安全群組。如需詳細資訊,請參閱 Amazon 彈性容器服務 API 參考AwsVpcConfiguration中的。

  • 您的帳戶無法手動分離或修改由 Fargate 建立並連接的 ENI。這是為了防止意外刪除與正在執行之任務相關聯的 ENI。若要釋出任務的 ENI,請停止該任務。

  • 如果 VPC 子網已更新以變更其使用的 DHCP 選項集,您也無法將這些變更套用到使用 VPC 的現有任務。啟動新任務,其將在測試新變更接著停止舊任務的同時,接收新的設定以順利遷移 (如果不需要轉返)。

  • 在具有 IPv6 CIDR 區塊的子網中啟動的任務只會在使用 Fargate 平台 Linux 1.4.0 版或更新版或 Windows 1.0.0 版時接收 IPv6 位址。

  • 對於使用平台 Linux 1.4.0 版或更新版或者 Windows 1.0.0 版的任務,任務 ENI 支援巨型訊框。網路界面皆以最大傳輸單位 (MTU) 來設定,這是適合單一框架的最大酬載大小。MTU 越大,單一框架能容納的應用程式酬載越多,可降低每個框架的額外負荷並提高效率。當任務和目的地之間的網路路徑支援巨型訊框時,支援巨型訊框會降低額外負荷。

  • 使用 Fargate 啟動類型的服務與任務僅支援 Application Load Balancer 和 Network Load Balancer。不支援 Classic Load Balancer。當您建立任何目標群組時,必須選擇 ip 做為目標類型,而不是選擇 instance。如需詳細資訊,請參閱 使用負載平衡來分配 Amazon ECS 服務流量

在雙堆疊模式下使用 VPC

在雙堆疊模式中使用 VPC 時,您的任務可透過 IPv4 或 IPv6 或兩者進行通訊。IPv4 和 IPv6 地址彼此互相獨立。您必須在您的 VPC 中分別為 IPv4 和 IPv6 設定路由和安全。如需將 VPC 設定為雙堆疊模式的詳細資訊,請參閱 《Amazon VPC 使用者指南》 中的遷移至 IPv6

如果符合下列條件,則會將 IPv6 位址指派給 Fargate 上的 Amazon ECS 任務:

  • 您的 Amazon ECS dualStackIPv6 帳戶設定已開啟 (enabled),以便在您要啟動任務的區域中啟動任務的 IAM 主體。此設定只能使用 API 或修改 AWS CLI。您可以透過設定帳戶預設設定,選擇為帳戶上的特定 IAM 主體或整個帳戶開啟此設定。如需詳細資訊,請參閱 透過帳戶設定存取 Amazon ECS 功能

  • 已對 IPv6 啟用 VPC 和子網路。如需如何將 VPC 設定為雙堆疊模式的詳細資訊,請參閱《Amazon VPC 使用者指南》中的遷移至 IPv6

  • 您的子網路已啟用以自動指派 IPv6 位址。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的修改子網路的 IPv6 地址屬性

  • 任務或服務使用適用於 Linux 的 Fargate 平台版本 1.4.0 或更高版本。

如果您將 VPC 設定網際網路閘道或傳出限定網際網路閘道,在 Fargate 上指派 IPv6 位址的 Amazon ECS 任務就可存取網際網路。不需要 NAT 閘道。如需詳細資訊,請參閱 《Amazon VPC 使用者指南》 中的網際網路閘道輸出限定網際網路閘道