將 Amazon ECS 應用程式連線至網際網路 - Amazon Elastic Container Service

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

將 Amazon ECS 應用程式連線至網際網路

大多數容器化應用程式至少有一些元件需要網際網路的傳出存取權。例如,行動應用程式的後端需要推播通知的傳出存取權。

Amazon Virtual Private Cloud 主要有兩種方法來促進 VPC 與網際網路之間的通訊。

公有子網路和網際網路閘道

此圖表顯示連線至網際網路閘道的公有子網路架構。

當您使用具備網際網路閘道路由的公有子網路時,容器化應用程式即可在 VPC 內的公用子網路中執行。執行容器的主機會獲指派公有 IP 位址。此公有 IP 位址可從網際網路進行路由。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的網際網路閘道

此網路架構可促進執行應用程式的主機與網際網路上其他主機之間的直接通訊。通訊是雙向的。這表示您不僅能建立通往網際網路上任何主機的傳出連線,網際網路上的其他主機也可能嘗試連線至您的主機。因此,您應該密切注意自己的安全群組與防火牆規則。這能確保網際網路上的其他主機無法開啟任何您不希望開放的連線。

例如,若應用程式在 Amazon EC2 上執行,請確定用於 SSH 存取的連接埠 22 未開啟。否則,您的執行個體可能會不斷收到來自網際網路中惡意機器人的 SSH 連線嘗試。這些機器人會掃描公有 IP 位址。一旦找到開啟的 SSH 連接埠,機器人就會嘗試以暴力破解密碼的方式入侵您的執行個體。因此,許多組織會限制公有子網路的使用,並且偏好將大部分資源 (甚至全部) 置於私有子網路內。

使用公有子網路進行聯網,適用於需要大量頻寬或極低延遲的公開應用程式。適用的使用案例包括影片串流與遊戲服務。

當您在 Amazon EC2 與 AWS Fargate上使用 Amazon ECS 時,都支援此聯網方案。

  • Amazon EC2:您可以在公有子網路上啟動 EC2 執行個體。Amazon ECS 使用這些 EC2 執行個體作為叢集容量,在執行個體上執行的任何容器都可以使用主機的底層公有 IP 位址進行傳出聯網通訊。這同時適用於 hostbridge 網路模式。不過,awsvpc 網路模式不會為任務 ENI 提供公有 IP 位址。因此,這些 ENI 無法直接使用網際網路閘道。

  • Fargate:當您建立 Amazon ECS 服務時,請為服務的聯網組態指定公有子網路,並使用指派公有 IP 位址選項。每個 Fargate 任務都在公有子網路中網路設定,並擁有專屬公有 IP 位址,可直接與網際網路通訊。

私有子網路和 NAT 閘道

此圖表顯示連線至 NAT 閘道的私有子網路的架構。

當您使用私有子網路與 NAT 閘道時,可在私有子網路中的主機上執行容器化應用程式。因此,此主機具有可在 VPC 內進行路由,但無法從網際網路進行路由的私有 IP 位址。這表示 VPC 內的其他主機可以使用其私有 IP 位址連線至主機,但網際網路上的其他主機無法對主機進行任何傳入通訊。

透過私有子網路,您可以使用網路位址轉譯 (NAT) 閘道,讓私有子網路內的主機能夠連接至網際網路。網際網路上的主機會收到傳入連線,該連線似乎來自公有子網路內 NAT 閘道的公有 IP 位址。NAT 閘道負責作為網際網路與私有子網路之間的橋接器。基於安全性考量,這類組態常被優先採用,因為能確保您的 VPC 免受網際網路中攻擊者的直接存取。如需詳細資訊,請參閱 《Amazon VPC 使用者指南》中的 NAT 閘道

此類私有聯網方案適用於您希望保護容器免遭直接外部存取的案例。適用案例包括支付處理系統或儲存使用者資料與密碼的容器。您將需要為您帳戶中建立及使用的 NAT 閘道支付費用。NAT 閘道的每小時用量率與資料處理率也同樣適用。基於備援目的,您應該在每個可用區域中部署一個 NAT 閘道。如此,單一可用區域的可用性損失就不會影響傳出連線能力。因此,如果工作負載很小,使用私有子網路與 NAT 閘道可能更具成本效益。

在 Amazon EC2 與 AWS Fargate上使用 Amazon ECS 時,都支援此聯網方案。

  • Amazon EC2:您可以在私有子網路上啟動 EC2 執行個體。在這些 EC2 主機上執行的容器會使用底層主機聯網設定,而傳出請求會透過 NAT 閘道傳輸。

  • Fargate:當您建立 Amazon ECS 服務時,請為服務的聯網組態指定私有子網路,但不使用指派公有 IP 位址選項。每個 Fargate 任務皆託管於私有子網路中。其傳出流量會透過您已與該私有子網路關聯的任一 NAT 閘道進行路由。