本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon ECS 應用程式連接至網際網路
大多數容器化應用程式至少有一些元件需要對外存取網際網路。例如,行動應用程式的後端需要傳出推送通知的存取權。
Amazon Virtual Private Cloud 有兩種主要方法,可促進 VPC與網際網路之間的通訊。
公有子網路和網際網路閘道
當您使用具有網際網路閘道路由的公有子網路時,容器化應用程式可以在公有子網路上的 內部主機VPC上執行。執行容器的主機會獲指派公有 IP 地址。此公有 IP 地址可從網際網路路由。如需詳細資訊,請參閱 Amazon VPC使用者指南 中的網際網路閘道。
此網路架構有助於執行應用程式的主機與網際網路上其他主機之間的直接通訊。通訊是雙向的。這表示您不僅可以建立與網際網路上任何其他主機的傳出連線,而且網際網路上的其他主機也可能嘗試連線至您的主機。因此,您應該密切注意您的安全群組和防火牆規則。這可確保網際網路上的其他主機無法開啟您不想開啟的任何連線。
例如,如果您的應用程式在 Amazon 上執行 EC2,請確定 SSH 存取的連接埠 22 未開啟。否則,您的執行個體可能會收到來自網際網路上惡意機器人的持續SSH連線嘗試。這些機器人透過公有 IP 地址進行草編。他們找到開放SSH連接埠後,會嘗試強制輸入密碼來嘗試存取您的執行個體。因此,許多組織會限制公有子網路的使用,如果不是全部,則更希望在私有子網路內擁有大部分的資源。
使用公有子網路進行聯網適用於需要大量頻寬或最低延遲的公有應用程式。適用的使用案例包括影片串流和遊戲服務。
當您ECS在 Amazon 上使用 Amazon EC2以及在 上使用 Amazon 時,都支援此聯網方法 AWS Fargate。
-
Amazon EC2 — 您可以在公有子網路上啟動EC2執行個體。Amazon ECS使用這些EC2執行個體作為叢集容量,在執行個體上執行的任何容器都可以使用主機的基礎公有 IP 地址進行傳出聯網。這同時適用於
host
和bridge
網路模式。不過,awsvpc
網路模式不會提供ENIs具有公有 IP 地址的任務。因此,他們無法直接使用網際網路閘道。 -
Fargate — 當您建立 Amazon ECS服務時,請指定服務的聯網組態的公有子網路,並使用指派公有 IP 地址選項。每個 Fargate 任務都會在公有子網路中聯網,並擁有自己的公有 IP 地址,可直接與網際網路通訊。
私有子網路和NAT閘道
當您使用私有子網路和NAT閘道時,您可以在私有子網路中的主機上執行容器化應用程式。因此,此主機具有私有 IP 地址,可在您的 內路由VPC,但無法從網際網路路由。這表示 中的其他主機VPC可以使用其私有 IP 地址連線到主機,但網際網路上的其他主機無法對主機進行任何傳入通訊。
透過私有子網路,您可以使用網路地址轉譯 (NAT) 閘道,允許私有子網路內的主機連線至網際網路。網際網路上的主機會收到似乎來自公有子網路內NAT閘道的公有 IP 地址的傳入連線。NAT 閘道負責充當網際網路與私有 之間的橋樑VPC。基於安全考量,通常偏好此組態,因為這表示您的 VPC 不受網際網路上的攻擊者直接存取。如需詳細資訊,請參閱 Amazon VPC使用者指南 中的NAT閘道。
此私有聯網方法適用於您希望保護容器免於直接外部存取的情況。適用的案例包括付款處理系統或儲存使用者資料和密碼的容器。您需要支付在帳戶中建立和使用NAT閘道的費用。NAT 閘道每小時用量和資料處理費率也會適用。為了備援目的,您應該在每個可用區域中有一個NAT閘道。如此一來,單一可用區域的可用性損失,就不會影響對外連線。因此,如果您的工作負載很小,使用私有子網路和NAT閘道可能更具成本效益。
在 Amazon ECS上使用 Amazon 時,EC2以及在 上使用 Amazon 時,都支援此聯網方法 AWS Fargate。
-
Amazon EC2 — 您可以在私有子網路上啟動EC2執行個體。在這些EC2主機上執行的容器會使用基礎主機聯網,而傳出請求會通過NAT閘道。
-
Fargate:建立 Amazon ECS服務時,請指定服務聯網組態的私有子網路,不要使用指派公有 IP 地址選項。每個 Fargate 任務都託管在私有子網路中。其傳出流量會透過您與該私有子網路相關聯的任何NAT閘道路由。