本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
連線至網際網路
大多數容器化的應用程序至少有一些需要輸出訪問互聯網的組件。例如,行動應用程式的後端需要對推送通知的輸出存取權。
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
網路模式不提供公有 IP 地址的任務 ENI。因此,他們不能直接使用網際網路閘道。 -
使用 Fargate — 建立 Amazon ECS 服務時,請為服務的聯網配置指定公用子網路,並確保指派公有 IP 地址選項已啟用。每個 Fargate 任務都在公共子網絡中進行聯網,並且有自己的公共 IP 地址,用於與互聯網直接通信。
使用私人子網路和 NAT 閘道

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