

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

# Amazon ECS 閘道
<a name="gateway-overview"></a>

Amazon ECS Gateway 可簡化容器化應用程式的輸入聯網。它會自動佈建和管理將流量路由到 Amazon Elastic Container Service (Amazon ECS) 服務的基礎設施。您不需為每個服務設定 Application Load Balancer、接聽程式、目標群組、安全群組和憑證，而是在閘道上定義一次輸入設定，並在許多服務之間共用該基礎設施。

您可以使用所需的聯網組態建立閘道，並將其與一或多個 Amazon ECS 叢集建立關聯。然後，每個服務會透過新增閘道連接器參數來選擇加入。然後，Amazon ECS 會佈建和管理 AWS 帳戶中的輸入基礎設施，為每個連線的服務提供唯一的 HTTPS 主機名稱。

若要開始使用，請參閱[建立和管理閘道](gateway-managing.md)。若要將服務連線至已存在的閘道，請參閱[將服務連線至閘道](gateway-connect-service.md)。

## Amazon ECS Gateway 的運作方式
<a name="gateway-how-it-works"></a>

Amazon ECS Gateway 會將基礎設施管理與應用程式部署分開。它支援兩個主要角色：
+ **平台團隊**擁有閘道。他們會建立和設定閘道，並將其與 Amazon ECS 叢集建立關聯。閘道的組態適用於與其連線的每個服務，並包含跨聯網、安全性和操作的設定：
  + **網路**，例如可從網際網路或只能從 VPC 內部存取服務，以及負載平衡器使用的子網路
  + **安全性**，例如哪些安全群組控制傳入流量，以及哪些 AWS WAF Web ACL 適用
  + **操作**，例如存取日誌的目的地、允許多少負載平衡器容量，以及在漸進式部署期間識別測試流量的請求標頭。

  您無法在建立閘道後變更其中數個設定。如需詳細資訊，請參閱[自訂閘道](gateway-managing.md#gateway-customize)。
+ **應用程式團隊**會在建立或更新服務時新增閘道連接器參數，將其服務選擇為閘道。連接器會命名接收流量的容器連接埠，也可以設定存取類型篩選條件和運作狀態檢查。

透過閘道設定傳入需要三個步驟：

1. **建立閘道。**平台團隊會建立閘道並定義其輸入組態，包括聯網和安全性設定。

1. **將閘道與叢集建立關聯。**平台團隊會將閘道與一或多個 Amazon ECS 叢集建立關聯，使其可供這些叢集中的服務使用。

1. **Connect 服務。**每個服務都會個別選擇加入。應用程式團隊會在建立或更新服務時新增閘道連接器，並命名接收流量的容器連接埠。

在第一個服務連線之前，Amazon ECS 不會佈建基礎設施。然後，它會建立或重複使用共用資源、建立每個服務資源，以及建立閘道路由，以唯一 HTTPS URL 將流量導向服務。

## Amazon ECS Gateway 的優點
<a name="gateway-benefits"></a>

閘道可簡化應用程式的 Application Load Balancer 設定和管理。Amazon ECS Gateway 提供下列優點：
+ **集中式組態。**平台團隊會定義一次聯網、安全和流量管理設定，而連線到閘道的每個服務都會在叢集之間繼承這些設定。應用程式團隊會取得其服務的輸入，而無需自行設定任何資源或需要聯網專業知識。
+ **自動化基礎設施管理。**當服務選擇加入閘道時，Amazon ECS 會佈建和管理 Application Load Balancer、接聽程式、目標群組、安全群組、憑證和 DNS 主機名稱。
+ **成本最佳化。**使用相同的聯網組態跨多個服務共用 Application Load Balancer，以降低成本。
+ **透明基礎設施。**Amazon ECS 會在您的帳戶中建立所有資源 AWS ，您可以在其中使用 和 APIs 來檢視 AWS 管理主控台 和管理 AWS 這些資源。

## 重要概念
<a name="gateway-key-concepts"></a>

下表說明您使用 Amazon ECS Gateway 時所使用的概念。


| 概念 | 描述 | 
| --- | --- | 
| 閘道 | 具有自己的 ARN 的帳戶層級資源，可定義輸入組態，並管理與其連線之服務的基礎基礎設施。閘道名稱在帳戶和區域中是唯一的。 | 
| Gateway-cluster 關聯 | 閘道與叢集之間的連結，可讓該叢集中的服務使用閘道。關聯many-to-many：一個閘道可以提供多個叢集，一個叢集可以使用多個閘道。如需詳細資訊，請參閱[Gateway 服務限制](#gateway-service-quotas)。 | 
| 閘道連接器 | 服務上的選擇加入參數，可將其連線至與其叢集相關聯的所有相容閘道。連接器會指定要公開的容器連接埠名稱，並包含選用的存取類型和運作狀態檢查設定。 | 
| 閘道路由 | 具有自己的 ARN 的資源，代表服務與閘道之間的一個連線。Amazon ECS 會在服務連線時建立路由，並在服務中斷連線時將其刪除。路由會報告連線狀態、服務的 URL 和基礎服務特定的資源。 | 

## 由 Amazon ECS Gateway 管理的基礎設施
<a name="gateway-managed-infrastructure"></a>

Amazon ECS 會在您的帳戶中佈建兩類輸入基礎設施。


| Resource Type (資源類型) | 受管資源 | 描述 | 
| --- | --- | --- | 
| 共用基礎設施 | Application Load Balancer、負載平衡器接聽程式、負載平衡器安全群組 | 閘道在多個 Amazon ECS 服務中管理和共用的資源。 | 
| 服務特定的基礎設施 | AWS Certificate Manager 憑證、DNS 主機名稱、接聽程式規則、目標群組、服務安全群組 | Amazon ECS 為每個閘道路由建立的資源，以將流量導向對應的服務。 | 

Amazon ECS 使用主機型路由，將共用 Application Load Balancer 的請求導向適當的服務。每個服務都會取得格式為 的產生主機名稱`https://<unique-id>.ecs.<region>.on.aws`。網域因 AWS 分割區而異。

當您建立閘道或與叢集建立關聯時，閘道不會佈建任何內容。當第一個服務連線時，Amazon ECS 會佈建第一個負載平衡器、其接聽程式及其安全群組，然後新增該服務自己的資源。隨著更多服務連線，Amazon ECS 會重複使用具有容量的負載平衡器，或佈建另一個負載平衡器。最多 25 個服務共用一個 Application Load Balancer，每個服務都有自己的主機名稱、憑證和接聽程式規則。

Amazon ECS 會使用 `AmazonECSManaged=true`和系統標籤 來標記其管理的資源`aws:ecs:gateway-arn`，其值為閘道的 ARN。Amazon ECS 為每個閘道路由建立的目標群組、接聽程式規則和服務安全群組也附帶 `aws:ecs:gateway-route-arn`。使用這些標籤來尋找 Elastic Load Balancing、Amazon EC2 和 AWS Certificate Manager 主控台中的資源。

## 定價
<a name="gateway-pricing"></a>

使用 Amazon ECS Gateway 無需額外費用。您只需為服務連線至閘道時帳戶中佈建的基礎 AWS 資源付費，包括適用的 Application Load Balancer、Amazon CloudWatch logs和指標，以及資料傳輸費用。

## 可用性
<a name="gateway-availability"></a>

Amazon ECS Gateway 適用於所有商業 AWS 區域。它支援在所有啟動類型上使用 `awsvpc` 網路模式的 Amazon ECS 服務：Amazon ECS EC2、Fargate 和 Amazon ECS 受管執行個體。您可以使用 Amazon ECS 主控台、、 AWS CLI AWS SDKs 和 建立和管理閘道 CloudFormation。

## Gateway 服務限制
<a name="gateway-service-quotas"></a>

下表列出 Amazon ECS Gateway 的服務配額。


| 限制 | Value | 
| --- | --- | 
| 每個叢集的閘道叢集關聯上限 | 5 | 
| 每個閘道的最大叢集數 | 10,000 | 
| 每個服務的閘道連接器上限 | 1 | 
| 每個 Application Load Balancer 的最大服務數量 | 25 | 
| 每個閘道的最大應用程式負載平衡器數量 | 200 | 

基礎 AWS 資源也受限於自己的服務配額。請參閱 [Application Load Balancer 的配額](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html)。

## 考量事項
<a name="gateway-considerations"></a>

採用 Amazon ECS Gateway 之前，請先檢閱以下內容。

**閘道僅提供`HTTPS`流量。**閘道使用 Application Load Balancer 搭配主機型路由，因此可提供由主機名稱定址的 Web 應用程式和 APIs。接聽程式只會使用連接埠 443 上的`HTTPS`通訊協定。不支援其他通訊協定。

**服務必須使用 `awsvpc` 網路模式。**使用 `bridge`、 `host`或 `none` 網路模式的服務無法連線至閘道。

**閘道可在單一帳戶中運作。**閘道及其叢集必須位於相同的 AWS 帳戶中。您無法將閘道與另一個帳戶中的叢集建立關聯。

**閘道不適用於快速模式服務。**它僅提供 Amazon ECS 服務。

**服務有一個閘道連接器。**您無法將第二個連接器新增至服務。一個連接器仍然可以將服務連接到多個閘道。

**服務無法依名稱選擇閘道。**連接器會將服務連接到與其叢集相關聯的每個相容閘道。如果服務在與服務相同的 VPC 中設定閘道，並涵蓋服務執行所在的每個可用區域，則閘道與存取類型篩選條件相符時相容。Amazon ECS 會排除不符合的每個閘道，當叢集中沒有符合所有三個條件的相容閘道時，請求會失敗。如需詳細資訊，請參閱[Amazon ECS 如何選取相容的閘道](gateway-connect-service.md#gateway-select-compatible)。

**某些閘道設定在建立後是不可變的。**您無法在建立閘道後變更閘道的名稱、類型、配置、接聽程式連接埠、接聽程式通訊協定、子網路或 IP 地址類型。若要變更其中任何一項，請建立新的閘道並將服務移至其中。如需詳細資訊，請參閱[更新閘道](gateway-managing.md#gateway-update)。

**Amazon ECS 不會合併負載平衡器。**閘道會在現有負載平衡器已滿時新增負載平衡器，並在它們變成空時將其移除。它不會在負載平衡器之間移動服務，因此數個部分填充的負載平衡器可以在服務離開後保留。

**Amazon ECS 不會修復其外部所做的變更。**如果您修改或刪除閘道管理的資源，Amazon ECS 不會將其還原。流向受影響服務的流量可能會停止，而更新後的服務部署、閘道更新和清除操作可能會失敗。如需詳細資訊，請參閱[在 Amazon ECS 外部所做的變更](gateway-troubleshooting.md#gateway-changes-outside-ecs)。