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 User Guide 中的 How Amazon VPC works

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

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

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

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

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

您還可以利用 AWS PrivateLink。您可以設定 VPC 介面端點,以便透過私有 IP 地址存取 Amazon ECS API。AWS PrivateLink 會將您 VPC 與 Amazon ECS 之間的所有網路流量限制於 Amazon 網路中。您不需要網際網路閘道、NAT 裝置或虛擬私有閘道。如需詳細資訊,請參閱 Amazon ECS 介面 VPC 端點 (AWS PrivateLink)

如需如何使用 NetworkConfiguration 資源搭配 CloudFormation 的範例,請參閱 適用於 Amazon ECS 的 CloudFormation 範例範本

建立的 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 for 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 Elastic Container Service API 參考 中的 AwsVpcConfiguration

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

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

  • 下列規則適用於在特定 Fargate 平台版本上執行的任務:Linux 系統對應 1.4.0 或更新版本,Windows 系統對應 1.0.0。在雙堆疊子網路中啟動的任務會取得 IPv4 位址與 IPv6 位址。在純 IPv6 子網路中啟動的任務只會取得 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 任務:

  • 在您啟動任務的區域中,執行任務啟動操作之 IAM 主體的 Amazon ECS dualStackIPv6 帳戶設定必須處於開啟 (enabled) 狀態。此設定僅可透過 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 使用者指南》 中的網際網路閘道輸出限定網際網路閘道

在純 IPv6 模式下使用 VPC

在純 IPv6 組態中,Amazon ECS 任務只會透過 IPv6 進行通訊。若要為純 IPv6 組態設定 VPC 與子網路,您必須將 IPv6 CIDR 區塊新增至 VPC,並建立僅包含 IPv6 CIDR 區塊的子網路。如需詳細資訊,請參閱 Amazon VPC User Guide 中的 Add IPv6 support for your VPCCreate a subnet。您還必須更新路由表,加入 IPv6 目標,並在安全群組中設定 IPv6 規則。如需詳細資訊,請參閱 Amazon VPC User Guide 中的 Configure route tablesConfigure security group rules

適用下列注意事項:

  • 您可透過以下兩種方式,將純 IPv4 或雙堆疊的 Amazon ECS 服務升級為純 IPv6 組態:一是直接將服務更新為使用純 IPv6 子網路;二是建立平行的純 IPv6 服務,再透過 Amazon ECS 藍綠部署將流量遷移至新服務。如需有關 Amazon ECS 藍/綠部署的詳細資訊,請參閱 Amazon ECS 藍/綠部署

  • 純 IPv6 的 Amazon ECS 服務必須使用具 IPv6 目標群組的雙堆疊負載平衡器。若要遷移的現有 Amazon ECS 服務後端掛載了 Application Load Balancer 或 Network Load Balancer,可建立新的雙堆疊負載平衡器並將流量從舊負載平衡器遷移過去,或直接更新現有負載平衡器的 IP 位址類型。

    如需有關 Network Load Balancer 的詳細資訊,請參閱 User Guide for Network Load Balancers 中的 Create a Network Load BalancerUpdate the IP address types for your Network Load Balancer。如需有關 Application Load Balancer 的詳細資訊,請參閱 User Guide for Application Load Balancers 中的 Create an Application Load BalancerUpdate the IP address types for your Application Load Balancer

  • Windows 不支援純 IPv6 組態。

  • 若要讓純 IPv6 組態中的 Amazon ECS 任務與純 IPv4 端點通訊,您可以設定 DNS64 與 NAT64,實現從 IPv6 到 IPv4 的網路位址轉換。如需更多詳細資訊,請參閱《Amazon VPC 使用者指南》中的「DNS64 和 NAT64」。

  • Fargate 平台版本 1.4.0 或更新版本支援純 IPv6 組態。

  • 在純 IPv6 組態中,Amazon ECS 工作負載從 Amazon ECR 拉取映像時,必須使用 Amazon ECR 雙堆疊映像 URI 端點。如需詳細資訊,請參閱 Amazon Elastic Container Registry User Guide 中的 Getting started with making requests over IPv6

    注意

    Amazon ECR 不支援可供純 IPv6 組態中任務使用的雙堆疊介面 VPC 端點。如需詳細資訊,請參閱 Amazon Elastic Container Registry User Guide 中的 Getting started with making requests over IPv6

  • 純 IPv6 組態不支援 Amazon ECS Exec。

  • Amazon CloudWatch 不支援雙堆疊 FIPS 端點,因此無法監控採用純 IPv6 組態且需符合 FIPS-140 規範的 Amazon ECS 任務。如需有關 FIPS-140 的詳細資訊,請參閱 AWS Fargate 美國聯邦資訊處理標準 (FIPS-140)

支援 Amazon ECS 純 IPv6 模式的 AWS 區域

您可以在以下支援 Amazon ECS 的 AWS 區域中,以純 IPv6 組態執行任務:

  • 美國東部 (俄亥俄)

  • 美國東部 (維吉尼亞北部)

  • 美國西部 (加利佛尼亞北部)

  • 美國西部 (奧勒岡)

  • 非洲 (開普敦)

  • 亞太區域 (香港)

  • 亞太區域 (海德拉巴)

  • 亞太區域 (雅加達)

  • 亞太區域 (墨爾本)

  • 亞太區域 (孟買)

  • 亞太區域 (大阪)

  • 亞太區域 (首爾)

  • 亞太區域 (新加坡)

  • 亞太區域 (雪梨)

  • 亞太區域 (東京)

  • 加拿大 (中部)

  • 加拿大西部 (卡加利)

  • 中國 (北京)

  • 中國 (寧夏)

  • 歐洲 (法蘭克福)

  • 歐洲 (倫敦)

  • 歐洲 (米蘭)

  • Europe (Paris)

  • 歐洲 (西班牙)

  • 以色列 (特拉維夫)

  • 中東 (巴林)

  • 中東 (阿拉伯聯合大公國)

  • 南美洲 (聖保羅)

  • AWS GovCloud (US-East)

  • AWS GovCloud (美國西部)