本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon ECS 應用程式連線至網際網路
大多數容器化應用程式至少有一些元件需要對外存取網際網路。例如,行動應用程式的後端需要傳出存取推送通知。
Amazon Virtual Private Cloud 有兩種主要方法來促進 VPC 與網際網路之間的通訊。
公有子網路和網際網路閘道

當您使用具有網際網路閘道路由的公有子網路時,容器化應用程式可以在公有子網路 VPC 內的主機上執行。執行容器的主機會獲指派公有 IP 地址。此公有 IP 地址可從網際網路路由。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的網際網路閘道。
此網路架構可促進執行應用程式之主機與網際網路上其他主機之間的直接通訊。通訊是雙向的。這表示您不僅可以建立與網際網路上任何其他主機的傳出連線,而且網際網路上的其他主機也可能嘗試連接到您的主機。因此,您應該密切注意您的安全群組和防火牆規則。這可確保網際網路上的其他主機無法開啟您不想開啟的任何連線。
例如,如果您的應用程式在 Amazon EC2 上執行,請確定 SSH 存取的連接埠 22 未開啟。否則,您的執行個體可能會收到來自網際網路上惡意機器人的持續 SSH 連線嘗試。這些機器人會透過公有 IP 地址進行網路爬取。找到開放的 SSH 連接埠後,他們會嘗試暴力破解密碼來嘗試存取您的執行個體。因此,許多組織會限制公有子網路的使用,如果不是全部,則偏好在私有子網路內擁有大部分的資源。
使用公有子網路進行聯網適用於需要大量頻寬或最小延遲的公有應用程式。適用的使用案例包括影片串流和遊戲服務。
當您在 Amazon EC2 上使用 Amazon ECS 和使用時,都支援此聯網方法 AWS Fargate。
-
Amazon EC2 — 您可以在公有子網路上啟動 EC2 執行個體。Amazon ECS 使用這些 EC2 執行個體做為叢集容量,在執行個體上執行的任何容器都可以使用主機的基礎公有 IP 地址進行傳出聯網。這同時適用於
host
和bridge
網路模式。不過,awsvpc
網路模式不會為任務 ENIs提供公有 IP 地址。因此,他們無法直接使用網際網路閘道。 -
Fargate — 當您建立 Amazon ECS 服務時,請為服務的網路組態指定公有子網路,並使用指派公有 IP 地址選項。每個 Fargate 任務都在公有子網路中聯網,並擁有自己的公有 IP 地址,可直接與網際網路通訊。
私有子網路和 NAT 閘道

當您使用私有子網路和 NAT 閘道時,您可以在私有子網路中的主機上執行容器化應用程式。因此,此主機具有可在 VPC 內路由的私有 IP 地址,但無法從網際網路路由。這表示 VPC 內的其他主機可以使用其私有 IP 地址連線到主機,但網際網路上的其他主機無法對主機進行任何傳入通訊。
透過私有子網路,您可以使用網路位址轉譯 (NAT) 閘道,允許私有子網路內的主機連線至網際網路。網際網路上的主機會收到傳入連線,似乎來自公有子網路內 NAT 閘道的公有 IP 地址。NAT 閘道負責做為網際網路和私有子網路之間的橋樑。基於安全考量,通常偏好此組態,因為這表示您的 VPC 不受網際網路上的攻擊者直接存取。如需詳細資訊,請參閱 《Amazon VPC 使用者指南》中的 NAT 閘道。
此私有聯網方法適用於您希望保護容器免於直接外部存取的情況。適用的案例包括付款處理系統或儲存使用者資料和密碼的容器。您將需要為您帳戶中建立及使用的 NAT 閘道支付費用。NAT 閘道每小時用量和資料處理費率也適用。基於備援目的,您應該在每個可用區域中有一個 NAT 閘道。如此一來,單一可用區域的可用性損失就不會影響對外連線能力。因此,如果您的工作負載很小,使用私有子網路和 NAT 閘道可能更具成本效益。
在 Amazon EC2 上使用 Amazon ECS 和使用時,都支援此聯網方法 AWS Fargate。
-
Amazon EC2 — 您可以在私有子網路上啟動 EC2 執行個體。在這些 EC2 主機上執行的容器會使用基礎主機聯網,而傳出請求會通過 NAT 閘道。
-
Fargate — 當您建立 Amazon ECS 服務時,請為服務的網路組態指定私有子網路,而不使用指派公有 IP 地址選項。每個 Fargate 任務都託管在私有子網路中。其傳出流量會透過您與該私有子網路相關聯的任何 NAT 閘道路由。