

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

# Amazon API Gateway 概念
<a name="api-gateway-basic-concept"></a>

下節說明使用 API Gateway 的介紹性概念。

**API Gateway**  <a name="apigateway-definition-apigateway"></a>
API Gateway 是一項支援下列項目 AWS 的服務：  
+ 建立、部署和管理 [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) 應用程式程式設計界面 (API)，以公開後端 HTTP 端點、 AWS Lambda 函數或其他 AWS 服務。
+ 建立、部署和管理 [WebSocket](https://datatracker.ietf.org/doc/html/rfc6455) API，以公開 AWS Lambda 函數或其他 AWS 服務。
+ 透過前端 HTTP 及 WebSocket 端點呼叫已公開的 API 方法。

**API Gateway REST API**  <a name="apigateway-definition-apigateway-api"></a>
與後端 HTTP 端點、Lambda 函數或其他 AWS 服務整合的 HTTP 資源和方法集合。您可以在一或多個階段中部署此集合。一般而言，會根據應用程式邏輯將 API 資源組織為資源樹狀結構。每個 API 資源都可接觸一個或多個 API 方法，而這些方法必須擁有 API Gateway 所支援的唯一 HTTP 動詞。如需詳細資訊，請參閱[在 REST API 與 HTTP API 之間選擇](http-api-vs-rest.md)。

**API Gateway HTTP API**  <a name="apigateway-definition-http-api"></a>
與後端 HTTP 端點或 Lambda 函數整合的路由和方法集合。您可以在一或多個階段中部署此集合。每個路由都可接觸一個或多個 API 方法，而這些方法必須擁有 API Gateway 所支援的唯一 HTTP 動詞。如需詳細資訊，請參閱[在 REST API 與 HTTP API 之間選擇](http-api-vs-rest.md)。

**API Gateway WebSocket API**  <a name="apigateway-definition-apigateway-websocket-api"></a>
與後端 HTTP 端點、Lambda 函數或其他 AWS 服務整合的 WebSocket 路由和路由金鑰集合。您可以在一或多個階段中部署此集合。API 方法可透過前端 WebSocket 連線呼叫，該連線須能夠與已註冊的自訂網域名稱建立關聯。

**API 部署**  <a name="apigateway-definition-api-deployment"></a>
您的 API Gateway API 時間點快照。若要可供用戶端使用，部署必須與一或多個 API 階段相關聯。

**API 開發人員**  <a name="apigateway-definition-api-developer"></a>
擁有 API Gateway 部署 AWS 的帳戶 （例如，也支援程式設計存取的服務提供者）。

**API 端點**  <a name="apigateway-definition-api-endpoints"></a>
API Gateway 內已部署至特定區域之 API 的主機名稱。主機名稱的格式為 `{api-id}.execute-api.{region}.amazonaws.com`。支援下列類型的 API 端點：  
+ [邊緣最佳化的 API 端點](#apigateway-definition-edge-optimized-api-endpoint)
+ [私有 API 端點](#apigateway-definition-private-api-endpoint)
+ [區域 API 端點](#apigateway-definition-regional-api-endpoint)

**API 金鑰**  <a name="apigateway-definition-api-key"></a>
API Gateway 用來識別使用 REST 或 WebSocket API 之應用程式開發人員的英數字元字串。API Gateway 可以代表您產生 API 金鑰，或從 CSV 檔案匯入它們。您可以同時使用 API 金鑰與 [Lambda 授權方](apigateway-use-lambda-authorizer.md)或[用量計劃](api-gateway-api-usage-plans.md)，以控制對 API 的存取。  
請參閱 [API 端點](#apigateway-definition-api-endpoints)。

**API 擁有者**  <a name="apigateway-definition-api-owner"></a>
請參閱 [API 開發人員](#apigateway-definition-api-developer)。

**API 階段**  <a name="apigateway-definition-api-stage"></a>
API 生命週期狀態的邏輯參考 (例如，'dev'、'prod'、'beta'、'v2')。您可以 API ID 和階段名稱來識別 API 階段。

**應用程式開發人員**  <a name="apigateway-definition-app-developer"></a>
應用程式建立者不一定擁有 AWS 帳戶，並與 API 開發人員已部署的 API 互動。應用程式開發人員是您的客戶。通常會透過 [ API 金鑰](#apigateway-definition-api-key)識別應用程式開發人員。

**回呼 URL**  
當新的用戶端透過 WebSocket 進行連線，您可在 API Gateway 中呼叫整合來存放用戶端的回呼 URL。之後您即可使用該回呼 URL 從後端系統傳送訊息到連接的用戶端。

**開發人員入口網站**  <a name="apigateway-definition-developer-portal"></a>
API 提供者可以與 API 消費者共用其 APIs和 API 文件的應用程式。APIs會分組為產品，這是 REST API 端點、API 文件和補充產品文件的集合。  
請參閱 [API Gateway 入口網站](apigateway-portals.md)。

**邊緣最佳化的 API 端點**  <a name="apigateway-definition-edge-optimized-api-endpoint"></a>
使用 CloudFront 分佈來促進用戶端存取時，部署到指定區域之 API Gateway API 的預設主機名稱，通常來自 AWS 區域。API 請求會路由到最近的 CloudFront 出現點 (POP)，通常可改善分散各地之用戶端的連線時間。  
請參閱 [API 端點](#apigateway-definition-api-endpoints)。

**整合請求**  <a name="apigateway-definition-integration-request"></a>
API Gateway 內 WebSocket API 路由或 REST API 方法的內部界面，您要將其中路由請求或參數的本文及方法請求的本文，映射至後端要求的格式。

**整合回應**  <a name="apigateway-definition-integration-response"></a>
API Gateway 內 WebSocket API 路由或 REST API 方法的內部界面，您要將其中從後端接收的狀態碼、標頭和承載，映射至將傳回用戶端應用程式的回應格式。

**對應範本**  <a name="apigateway-definition-mapping-template"></a>
以 [Velocity 範本語言 (VTL)](https://velocity.apache.org/engine/devel/vtl-reference.html) 表示的指令碼，可將請求本文從前端資料格式轉換為後端資料格式，或是將回應本文從後端資料格式轉換為前端資料格式。映射範本可指定於整合請求或整合回應中。它們可以參考在執行時間提供為內容和階段變數的資料。  
映射可如同[身分轉換](https://en.wikipedia.org/wiki/Identity_transform)一樣簡單，可透過整合的現狀依照請求將標頭或本文從用戶端傳遞至後端。回應也是如此，其中承載會從後端傳遞至用戶端。

**方法請求**  <a name="apigateway-definition-method-request"></a>
API Gateway 中 API 方法的公有界面，定義應用程式開發人員必須在請求中傳送以透過 API 存取後端的參數和內文。

**方法回應**  <a name="apigateway-definition-method-response"></a>
REST API 的公有界面，其定義的狀態碼、標頭和本文模型應為應用程式開發人員預期自 API 接收的回應。

**模擬整合**  <a name="apigateway-definition-mock-integration"></a>
模擬整合中，API 回應由 API Gateway 直接產生，無須整合後端。作為 API 開發人員，您可決定 API Gateway 回應如何模擬整合請求。因此，您設定方法的整合請求和整合回應，以將回應與特定狀態碼建立關聯。

**模型**  <a name="apigateway-definition-model"></a>
資料結構描述，其指定請求或回應承載的資料結構。必須使用模型才能產生 API 的強類型開發套件。模型也用來驗證承載。模型方便用於產生範例對應範本以啟動生產對應範本的建立。模型雖然實用，但不是建立對應範本的必要項目。

**Portal**  <a name="apigateway-definition-portal"></a>
請參閱[開發人員入口網站](#apigateway-definition-developer-portal)。

**入口網站產品**  <a name="apigateway-definition-product"></a>
您要共用的服務或功能。您的入口網站產品是產品 REST 端點和產品頁面的集合。產品 REST 端點是入口網站產品的存取點，由 REST API 的路徑和方法及其部署的階段組成。產品頁面是您用來說明 API 消費者如何使用您產品端點的文件。您可以跨 AWS 帳戶共用產品，將它們新增至入口網站。  
請參閱[建立產品](apigateway-portals-create-portal-product.md)。

**私有 API**  <a name="apigateway-definition-private-api"></a>
請參閱[私有 API 端點](#apigateway-definition-private-api)。

**私有 API 端點**  <a name="apigateway-definition-private-api-endpoint"></a>
可由界面 VPC 端點接觸的 API 端點，可允許用戶端在 VPC 內安全存取私有 API 資源。私有 API 與公有網際網路彼此隔離，而且只能使用已授與存取權限的 API Gateway VPC 端點存取。

**私有整合**  <a name="apigateway-definition-private-integration"></a>
一種 API Gateway 整合類型，可讓用戶端透過私有 REST API 端點存取客戶 VPC 內的資源，無須將資源公開在公有網際網路。

**代理整合**  <a name="apigateway-definition-proxy-integration"></a>
簡化的 API Gateway 整合組態。您可將代理整合設定為 HTTP 代理整合或 Lambda 代理整合。  
針對 HTTP 代理整合，API Gateway 會在前端與 HTTP 後端之間傳遞整個請求和回應。針對 Lambda 代理整合，API Gateway 會傳送整個請求作為後端 Lambda 函數的輸入。API Gateway 接著會將 Lambda 函數輸出轉換為前端 HTTP 回應。  
在 REST API 中，代理整合通常會與代理資源搭配使用，而代理資源會結合全部截獲 `{proxy+}` 方法，以 Greedy 路徑變數 (如 `ANY`) 呈現。

**快速建立**  <a name="apigateway-definition-quick-create"></a>
您可以使用快速建立來簡化 HTTP API 的建立。快速建立會建立具有 Lambda 或 HTTP 整合的 API、預設的全部捕獲路由，以及設定為自動部署變更的預設階段。如需更多詳細資訊，請參閱 [使用 CLI AWS 建立 HTTP API](http-api-develop.md#http-api-examples.cli.quick-create)。

**區域 API 端點**  <a name="apigateway-definition-regional-api-endpoint"></a>
部署到指定 區域的 API 主機名稱，旨在為相同區域中的 EC2 執行個體等用戶端提供服務 AWS 。API 請求的目標是直接設為區域特定 API Gateway API，而不需要通過任何 CloudFront 分佈。針對區域中請求，區域端點會略過與 CloudFront 分佈的不必要往返。  
此外，您還可以在區域端點上套用[延遲型路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency)，以使用相同的區域 API 端點組態來將 API 部署至多個區域、設定每個已部署 API 的相同自訂網域名稱，以及在 Route 53 中設定延遲型 DNS 記錄，以將用戶端請求路由至擁有最低延遲的區域。  
請參閱 [API 端點](#apigateway-definition-api-endpoints)。

**路由**  <a name="apigateway-definition-route"></a>
API Gateway 中的 WebSocket 路由用於根據訊息的內容，將傳入的訊息導向特定整合，例如 AWS Lambda 函數。定義 WebSocket API 時，須指定路由金鑰和整合後端。路由金鑰是訊息本文中的一個屬性。若傳入訊息的路由金鑰相符，將呼叫整合後端。  
預設路由也可設定用於不相符的路由金鑰或用來指定代理模型，將訊息現狀傳遞至執行路由並處理請求的後端元件。

**路由請求**  <a name="apigateway-definition-route-request"></a>
API Gateway 中 WebSocket API 方法的公有界面，其定義的本文必須在應用程式開發人員的請求中傳送，藉以透過 API 存取後端。

**路由回應**  <a name="apigateway-definition-route-response"></a>
WebSocket API 的公有界面，其定義的狀態碼、標頭和本文模型應為應用程式開發人員預期自 API Gateway 接收的內容。

**用量計畫**  <a name="apigateway-definition-usage-plan"></a>
[用量計劃](api-gateway-api-usage-plans.md)提供所選的 API 用戶端，可存取一個或多個已部署 REST 或 WebSocket API。您可以使用用量計畫設定調節和配額限制，這些是針對個別用戶端 API 金鑰所強制執行。

**WebSocket 連線**  
API Gateway 會持續維持用戶端和 API Gateway 本身之間的連線。與 API Gateway 和後端整合 (例如 Lambda 函數) 之間沒有持續連線。根據從用戶端接收的郵件內容，視需要呼叫後端服務。