

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

# 什麼是 Amazon API Gateway？
<a name="welcome"></a>

Amazon API Gateway 是一項 AWS 服務，用於建立、發佈、維護、監控和保護任何規模的 REST、HTTP 和 WebSocket APIs。API 開發人員可以建立 APIs 來存取 AWS 或其他 Web 服務，以及存放在 [AWS 雲端](https://aws.amazon.com/what-is-cloud-computing/)的資料。身為 API Gateway API 開發人員，您也可以建立要在自己用戶端應用程式中使用的 API。或者，您可以讓 API 供第三方應用程式開發人員使用。如需更多詳細資訊，請參閱 [誰使用 API Gateway？](api-gateway-overview-developer-experience.md#apigateway-who-uses-api-gateway)。

API Gateway 所建立的 RESTful API 會：
+ 以 HTTP 為基礎。
+ 啟用無狀態的用戶端伺服器通訊。
+ 實作標準 HTTP 方法，例如 GET、POST、PUT、PATCH 和 DELETE。

如需 API Gateway REST API 和 HTTP API 的詳細資訊，請參閱[在 REST API 與 HTTP API 之間選擇](http-api-vs-rest.md)、[API Gateway HTTP API](http-api.md)、[使用 API Gateway 建立 REST API](api-gateway-overview-developer-experience.md#api-gateway-overview-rest)，以及[在 APIs Gateway 中開發 REST API](rest-api-develop.md)。

API Gateway 所建立的 WebSocket API 會：
+ 遵循 [WebSocket](https://datatracker.ietf.org/doc/html/rfc6455) 通訊協定，在用戶端與伺服器之間啟用狀態、全雙工通訊。
+ 根據訊息內容路由傳入的訊息。

如需 API Gateway WebSocket API 的詳細資訊，請參閱[使用 API Gateway 來建立 WebSocket API](api-gateway-overview-developer-experience.md#api-gateway-overview-websocket) 和[API Gateway 中的 WebSocket API 概觀](apigateway-websocket-api-overview.md)。

**Topics**
+ [API Gateway 架構](#api-gateway-overview-aws-backbone)
+ [API Gateway 的功能](#api-gateway-overview-features)
+ [API Gateway 使用案例](api-gateway-overview-developer-experience.md)
+ [存取 API Gateway](#introduction-accessing-apigateway)
+ [無 AWS 伺服器基礎設施的一部分](#api-gateway-overview-a-serverless-pillar)
+ [如何開始使用 Amazon API Gateway](#welcome-how-to-get-started)
+ [Amazon API Gateway 概念](api-gateway-basic-concept.md)
+ [在 REST API 與 HTTP API 之間選擇](http-api-vs-rest.md)
+ [開始使用 REST API 主控台](getting-started-rest-new-console.md)

## API Gateway 架構
<a name="api-gateway-overview-aws-backbone"></a>

下圖顯示的是 API Gateway 架構。

![\[API Gateway 架構圖表\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/Product-Page-Diagram_Amazon-API-Gateway-How-Works.png)


此圖表旨在說明您在 Amazon API Gateway 中建置的 API 如何讓您或開發人員客戶在建置 AWS 無伺服器應用程式時，享有整合且一致的開發人員體驗。API Gateway 負責處理有關接受和處理多達數十萬個並行 API 呼叫的所有任務，這些任務包括流量管理、授權和存取控制、監控和 API 版本管理。

API Gateway 可做為應用程式從後端服務存取資料、商業邏輯或功能的「前門」，例如在 Amazon Elastic Compute Cloud (Amazon EC2) 上執行的工作負載 AWS Lambda、在 上執行的程式碼、任何 Web 應用程式或即時通訊應用程式。

## API Gateway 的功能
<a name="api-gateway-overview-features"></a>

Amazon API Gateway 提供如下功能：
+ 支援狀態 ([WebSocket](apigateway-websocket-api.md)) 和無狀態 ([HTTP](http-api.md) 及 [REST](apigateway-rest-api.md)) API。
+ 強大且靈活的[身分驗證](apigateway-control-access-to-api.md)機制，例如 AWS Identity and Access Management 政策、Lambda 授權方函數和 Amazon Cognito 使用者集區。
+ [Canary 發行部署](canary-release.md)，可讓您安全地進行變更。
+ 記錄和監控 API 使用情況與 API 變更的 [CloudTrail](cloudtrail.md)。
+ CloudWatch 存取記錄和執行記錄，包括設定警示的功能。如需詳細資訊，請參閱[使用 Amazon CloudWatch 指標監控 REST API 執行](monitoring-cloudwatch.md)及[使用 CloudWatch 指標監控 WebSocket API 執行](apigateway-websocket-api-logging.md)。
+ 能夠使用 CloudFormation 範本來啟用 API 建立。如需詳細資訊，請參閱 [Amazon API Gateway 資源類型參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ApiGateway.html)和 [Amazon API Gateway V2 資源類型參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ApiGatewayV2.html)。
+ 支援[自訂網域名稱](how-to-custom-domains.md)。
+ 與 [AWS WAF](apigateway-control-access-aws-waf.md) 的整合，用於保護 API 避免受到常見的網路攻擊。
+ 與 [AWS X-Ray](apigateway-xray.md) 的整合，用於了解和分類效能延遲。

如需 API Gateway 功能發布的完整清單，請參閱[文件歷史記錄](history.md)。

# API Gateway 使用案例
<a name="api-gateway-overview-developer-experience"></a>

下列使用案例區段呈現不同類型 API Gateway API 的概觀，以及使用 API Gateway 的不同開發人員類型。如需 REST API 與 HTTP API 之間差異的詳細資訊，請參閱 [在 REST API 與 HTTP API 之間選擇](http-api-vs-rest.md)。

**Topics**
+ [使用 API Gateway 建立 REST API](#api-gateway-overview-rest)
+ [使用 API Gateway 建立 HTTP API](#api-gateway-overview-http)
+ [使用 API Gateway 來建立 WebSocket API](#api-gateway-overview-websocket)
+ [誰使用 API Gateway？](#apigateway-who-uses-api-gateway)

## 使用 API Gateway 建立 REST API
<a name="api-gateway-overview-rest"></a>

API Gateway REST API 是由資源和方法構成。資源是應用程式可透過資源路徑存取的邏輯實體。方法會對應至 API 使用者所提交的 REST API 請求，以及使用者所傳回的回應。

例如，`/incomes` 可以是代表應用程式使用者收入之資源的路徑。資源可以有適當的 HTTP 動詞 (例如 GET、POST、PUT、PATCH 和 DELETE) 所定義的一或多個操作。可識別 API 方法的資源路徑和操作組合。例如，`POST /incomes` 方法可新增發起人所獲得的收入，而 `GET /expenses` 方法可查詢發起人所產生的報告費用。

應用程式不必知道在後端存放和擷取所請求資料的位置。在 API Gateway REST API 中，系統會以「*方法請求*」和「*方法回應*」封裝前端。API 會使用*整合請求*和*整合回應*以與後端互動。

例如，使用 DynamoDB 作為後端時，API 開發人員可以設定整合請求，以將傳入的方法請求轉送至選擇的後端。設定項目包含適當 DynamoDB 動作的規格、所需的 IAM 角色和政策，以及所需的輸入資料轉換。後端會將結果傳回 API Gateway 以做為整合回應。

若要將特定 HTTP 狀態碼之適當方法回應的整合回應路由至用戶端，您可以設定整合回應以將所需的回應參數從整合對應至方法。您接著會將後端的輸出資料格式翻譯為前端的輸出資料格式 (必要時)。API Gateway 可讓您定義[承載](https://en.wikipedia.org/wiki/Payload_(computing))的結構描述或模型，以協助設定內文映射範本。

API Gateway 提供如下 REST API 管理功能：
+ 支援使用 OpenAPI 的 API Gateway 延伸項目來產生軟體開發套件和建立 API 文件
+ HTTP 請求的調節

## 使用 API Gateway 建立 HTTP API
<a name="api-gateway-overview-http"></a>

HTTP API 可讓您建立比 REST API 延遲更低和成本更低的 RESTful API。

您可以使用 HTTP APIs 將請求傳送至 AWS Lambda 函數或任何可公開路由的 HTTP 端點。

例如，您可以在後端建立與 Lambda 函數整合的 HTTP API。當用戶端呼叫您的 API 時，API Gateway 會將請求傳送到該 Lambda 函數並傳回該函數的回應給用戶端。

HTTP API 支援 [OpenID Connect](https://openid.net/developers/how-connect-works/) 和 [OAuth 2.0](https://oauth.net/2/) 授權。它們提供跨來源資源共享 (CORS) 和自動部署的內建支援。

如需進一步了解，請參閱[在 REST API 與 HTTP API 之間選擇](http-api-vs-rest.md)。

## 使用 API Gateway 來建立 WebSocket API
<a name="api-gateway-overview-websocket"></a>

在 WebSocket API 中，用戶端和伺服器都可以隨時將訊息傳送給彼此。後端伺服器可以輕鬆地將資料發送至連線的使用者和裝置，進而免除了實作複雜的輪詢機制。

例如，您可以使用 API Gateway WebSocket API 建置無伺服器應用程式 AWS Lambda ，並傳送和接收聊天室中個別使用者或使用者群組的訊息。或者，您可以根據訊息內容叫用後端服務 AWS Lambda，例如 Amazon Kinesis 或 HTTP 端點。

您還能利用 API Gateway WebSocket API 建構安全的即時通訊應用程式，無需佈建或管理任何伺服器，即可管理連線或大規模資料交換。針對性使用案例包含即時的應用程式，如下所示：
+ 聊天應用程式
+ 股票行情之類的即時儀表板
+ 即時提醒和通知

API Gateway 提供 WebSocket API 管理功能，如下所示：
+ 對連線和訊息進行監控和調節
+ 使用 AWS X-Ray 在訊息通過 APIs到後端服務時追蹤訊息
+ 輕鬆整合 HTTP/HTTPS 端點

## 誰使用 API Gateway？
<a name="apigateway-who-uses-api-gateway"></a>

使用 API Gateway 的開發人員有兩種：API 開發人員和應用程式開發人員。

API 開發人員可建立和部署 API，以在 API Gateway 中啟用所需功能。API 開發人員必須是擁有 API AWS 之帳戶中的使用者。

應用程式開發人員建置正常運作的應用程式，透過叫用 API 開發人員在 API Gateway 中建立的 WebSocket 或 REST API 來呼叫 AWS 服務。

該應用程式開發人員是 API 開發人員的客戶。應用程式開發人員不需要 AWS 帳戶，前提是 API 不需要 IAM 許可，或支援透過 [Amazon Cognito 使用者集區聯合身分支援的第三方聯合身分提供者授權使用者](https://docs.aws.amazon.com/cognito/latest/developerguide/)。這類身分提供者包含 Amazon、Amazon Cognito 使用者集區、Facebook 和 Google。

### 建立和管理 API Gateway API
<a name="api-gateway-overview-developer-experience-managing-api"></a>

API 開發人員需要使用名為 `apigateway` 的 API Gateway 服務元件 (用於管理 API) 來建立、設定和部署 API。

身為 API 開發人員，您可以使用 API Gateway 主控台 (如 [API Gateway 入門](getting-started.md) 中所述) 或透過呼叫 [API 參考](api-ref.md) 來建立和管理 API。有數種方式可以呼叫此 API。其中包括使用 AWS Command Line Interface (AWS CLI) 或使用 AWS SDK。此外，您還可以使用 [AWS CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.html)或 (在 REST API 和 HTTP API 的情形下) [API Gateway 的 OpenAPI 擴充功能](api-gateway-swagger-extensions.md) 來建立 API。

如需支援 API Gateway 區域的清單，以及相關聯的控制服務端點，請參閱 [Amazon API Gateway 端點和配額](https://docs.aws.amazon.com/general/latest/gr/apigateway.html)。

### 呼叫 API Gateway API
<a name="api-gateway-overview-developer-experience-invoking-api"></a>

應用程式開發人員可使用名為 `execute-api` (用於執行 API) 的 API Gateway 服務元件來叫用在 API Gateway 中建立或部署的 API。基礎程式設計實體是透過所建立的 API 所公開。有數種方式可以呼叫這類 API。如需進一步了解，請參閱[在 API Gateway 中調用 REST API](how-to-call-api.md)和[調用 WebSocket API](apigateway-how-to-call-websocket-api.md)。

## 存取 API Gateway
<a name="introduction-accessing-apigateway"></a>

您可以通過以下方式存取 Amazon API Gateway：
+ **AWS 管理主控台** – AWS 管理主控台 提供用於建立和管理 APIs Web 界面。完成[設定為使用 API Gateway](setting-up.md)中的步驟後，您可以前往 [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) 存取 API Gateway 主控台。
+ **AWS SDKs** – 如果您使用的是 AWS 提供 開發套件的程式設計語言，您可以使用 開發套件來存取 API Gateway。軟體開發套件可簡化身分驗證、與開發環境輕鬆整合，並讓您存取 API Gateway 命令。如需詳細資訊，請參閱 [Amazon Web Services 適用工具](https://aws.amazon.com/developer/tools/)。
+ **API Gateway V1 和 V2 API** – 如果您使用的是沒有適用軟體開發套件的程式設計語言，請參閱 [Amazon API Gateway 第 1 版 API 參考](https://docs.aws.amazon.com/apigateway/latest/api/API_Operations.html)和 [Amazon API Gateway 第 2 版 API 參考](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/api-reference.html)。
+ **AWS Command Line Interface** – 如需詳細資訊，請參閱 *AWS Command Line Interface 使用者指南*中的[使用 AWS Command Line Interface完成設定](https://docs.aws.amazon.com/cli/latest/userguide/)。
+ **AWS Tools for Windows PowerShell** – 如需詳細資訊，請參閱 * AWS Tools for Windows PowerShell使用者指南*中的[設定AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)。

## 無 AWS 伺服器基礎設施的一部分
<a name="api-gateway-overview-a-serverless-pillar"></a>

[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/)API Gateway 與 一起組成面向應用程式的無 AWS 伺服器基礎設施部分。若要深入了解如何開始使用無伺服器，請參閱《[無伺服器開發人員指南](https://docs.aws.amazon.com/serverless/latest/devguide/welcome.html)》。

若要讓應用程式呼叫公開可用的 AWS 服務，您可以使用 Lambda 與必要的服務互動，並透過 API Gateway 中的 API 方法公開 Lambda 函數。 會在高可用性的運算基礎設施上執行 AWS Lambda 您的程式碼。它會執行所需的運算資源執行和管理。為了啟用無伺服器應用程式，API Gateway 支援與 AWS Lambda 和 HTTP 端點[的簡化代理整合](api-gateway-set-up-simple-proxy.md)。

## 如何開始使用 Amazon API Gateway
<a name="welcome-how-to-get-started"></a>

如需 Amazon API Gateway 的簡介，請參閱下列內容：
+ [API Gateway 入門](getting-started.md)，提供用於建立 HTTP API 的演練。
+ [無伺服器登陸](https://serverlessland.com/video?tag=Amazon%20API%20Gateway)，提供教學影片。
+ [Happy Little API Shorts](https://www.youtube.com/playlist?list=PLJo-rJlep0EDFw7t0-IBHffVYKcPMDXHY) 是一系列簡短的教學影片。

# 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 函數) 之間沒有持續連線。根據從用戶端接收的郵件內容，視需要呼叫後端服務。

# 在 REST API 與 HTTP API 之間選擇
<a name="http-api-vs-rest"></a>

REST API 和 HTTP API 都是 RESTful API 產品。REST API 支援比 HTTP API 更多的功能，而 HTTP API 的設計具有最少功能，因此它們能以較低的價格提供。如果您需要 API 金鑰、個別用戶端限制、請求驗證、 AWS WAF 整合或私有 API 端點等功能，請選擇 REST API。如果您不需要 REST API 中包含的功能，請選擇 HTTP API。

下節摘要說明REST API 和 HTTP API 中可用的核心功能。必要時會提供其他連結，以在《API Gateway 開發人員指南》的 REST API 和 HTTP API 章節之間導覽。

## 端點類型
<a name="http-api-vs-rest.differences.endpoint-type"></a>

端點類型是指 API Gateway 為您的 API 建立的端點。如需詳細資訊，請參閱[API Gateway 中 REST API 的 API 端點類型](api-gateway-api-endpoint-types.md)。


| 端點類型 | REST API | HTTP API | 
| --- | --- | --- | 
|  [邊緣最佳化](api-gateway-api-endpoint-types.md#api-gateway-api-endpoint-types-edge-optimized)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [區域性](api-gateway-api-endpoint-types.md#api-gateway-api-endpoint-types-regional)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | 
|  [私有](api-gateway-api-endpoint-types.md#api-gateway-api-endpoint-types-private)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 

## 安全
<a name="http-api-vs-rest.differences.security"></a>

API Gateway 提供多種方法來保護 API 免於遭受特定威脅，例如惡意行為者或流量高峰。如需了解詳細資訊，請參閱 [在 API Gateway 中保護您的 REST API](rest-api-protect.md) 和 [在 API Gateway 中保護您的 HTTP API](http-api-protect.md)。


| 安全性功能 | REST API | HTTP API | 
| --- | --- | --- | 
|  [交互 TLS 驗證](rest-api-mutual-tls.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](rest-api-mutual-tls.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-mutual-tls.md)  | 
|  [後端身分驗證的憑證](getting-started-client-side-ssl-authentication.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [AWS WAF](apigateway-control-access-aws-waf.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 

## Authorization
<a name="http-api-vs-rest.differences.authorization"></a>

API Gateway 支援多種機制來控制和管理 API 的存取。如需詳細資訊，請參閱[在 API Gateway 中控制和管理對 REST API 的存取](apigateway-control-access-to-api.md)及[在 API Gateway 中控制和管理對 HTTP API 的存取](http-api-access-control.md)。


| 授權選項 | REST API | HTTP API | 
| --- | --- | --- | 
|  [IAM](permissions.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](permissions.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-access-control-iam.md)  | 
|  [資源政策](apigateway-resource-policies.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否   | 
|  [Amazon Cognito](apigateway-integrate-with-cognito.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是 1  | 
|  [使用 AWS Lambda 函數的自訂授權](apigateway-use-lambda-authorizer.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](apigateway-use-lambda-authorizer.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-lambda-authorizer.md)  | 
|  [JSON Web Token (JWT)](http-api-jwt-authorizer.md) 2  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | 

1您可以搭配 [JWT 授權器](http-api-jwt-authorizer.md)使用 Amazon Cognito。

2您可以使用[Lambda 授權器](apigateway-use-lambda-authorizer.md)來驗證 REST API 的 JWT。

## API 管理
<a name="http-api-vs-rest.differences.management"></a>

如果您需要 API 管理功能 (例如 API 金鑰和個別用戶端速率限制)，請選擇 REST API。如需詳細資訊，請參閱[將您的 REST API 分發至 API Gateway 中的用戶端](rest-api-distribute.md)、[API Gateway 中公有 REST API 的自訂網域名稱](how-to-custom-domains.md)及[API Gateway 中 HTTP API 的自訂網域名稱](http-api-custom-domain-names.md)。


| 功能 | REST API | HTTP API | 
| --- | --- | --- | 
|  [自訂網域](how-to-custom-domains.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](how-to-custom-domains.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-custom-domain-names.md)  | 
|  [API 金鑰](api-gateway-api-usage-plans.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [個別用戶端速率限制](api-gateway-request-throttling.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [個別用戶端使用量限制](api-gateway-api-usage-plans.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [開發人員入口網站](apigateway-portals.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 

## 開發
<a name="http-api-vs-rest.differences.development"></a>

在開發 API Gateway API 時，您可以決定 API 的許多特性。這些特性取決於 API 的使用案例。如需詳細資訊，請參閱 [在 APIs Gateway 中開發 REST API](rest-api-develop.md) 及 [在 API Gateway 中開發 HTTP API](http-api-develop.md)。


| 功能 | REST API | HTTP API | 
| --- | --- | --- | 
|  [CORS 組態](how-to-cors.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](how-to-cors.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-cors.md)  | 
|  [測試叫用](how-to-test-method.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [快取](api-gateway-caching.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [使用者控制的部署](how-to-deploy-api.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](how-to-deploy-api.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-stages.md)  | 
|  [自動部署](http-api-stages.md)  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | 
|  [自訂閘道回應](api-gateway-gatewayResponse-definition.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [Canary 版本部署](canary-release.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [請求驗證](api-gateway-method-request-validation.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [請求參數轉換](rest-api-data-transformations.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](rest-api-data-transformations.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-parameter-mapping.md)  | 
|  [請求主體轉換](rest-api-data-transformations.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 

## 監控
<a name="http-api-vs-rest.differences.monitoring"></a>

API Gateway 支援多個選項來記錄 API 請求和監控 API。如需詳細資訊，請參閱[在 API Gateway 中監控 REST API](rest-api-monitor.md)及[在 API Gateway 中監控 HTTP API](http-api-monitor.md)。


| 功能 | REST API | HTTP API | 
| --- | --- | --- | 
|  [Amazon CloudWatch 指標](monitoring-cloudwatch.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](monitoring-cloudwatch.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-metrics.md)  | 
|  [CloudWatch Logs 的存取日誌](set-up-logging.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](set-up-logging.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-logging.md)  | 
|  [Amazon Data Firehose 的存取日誌](apigateway-logging-to-kinesis.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [執行日誌](set-up-logging.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [AWS X-Ray 追蹤](apigateway-xray.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 

## 整合
<a name="http-api-vs-rest.differences.integrations"></a>

將 API Gateway API 連接到後端資源的各項整合。如需詳細資訊，請參閱[API Gateway 中 REST API 的整合](how-to-integration-settings.md)及[在 API Gateway 中建立 HTTP API 的整合](http-api-develop-integrations.md)。


| 功能 | REST API | HTTP API | 
| --- | --- | --- | 
|  [公有 HTTP 端點](setup-http-integrations.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](setup-http-integrations.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-develop-integrations-http.md)  | 
|  [AWS 服務](api-gateway-api-integration-types.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](api-gateway-api-integration-types.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-develop-integrations-aws-services.md)  | 
|  [AWS Lambda 函數](set-up-lambda-integrations.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](set-up-lambda-integrations.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-develop-integrations-lambda.md)  | 
|  [與 Network Load Balancer 的私有整合](set-up-private-integration.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](set-up-private-integration.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](http-api-develop-integrations-private.md)  | 
|  [與 Application Load Balancer 的私有整合](http-api-develop-integrations-private.md)  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) [是](set-up-private-integration.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | 
|  [與 的私有整合 AWS Cloud Map](http-api-develop-integrations-private.md)  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否   |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | 
|  [模擬整合](how-to-mock-integration.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 
|  [回應串流](response-transfer-mode.md)  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/success_icon.svg) 是  | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/negative_icon.svg) 否  | 

# 開始使用 REST API 主控台
<a name="getting-started-rest-new-console"></a>

在此入門練習中，您會使用 API Gateway REST API 主控台建立無伺服器 REST API。無伺服器 API 讓您能夠專注於應用程式，而不必花時間佈建和管理伺服器。此練習過程不到 20 分鐘即可完成，而且可以包含在 [AWS 免費方案](https://aws.amazon.com/free/)中。

首先，使用 Lambda 主控台建立 Lambda 函數。接著，使用 API Gateway REST API 主控台建立 REST API。然後，建立 API 方法，並使用 Lambda 代理整合將它與 Lambda 函數整合。最後，部署和調用 API。

在您調用 REST API 時，API Gateway 會將請求路由至您的 Lambda 函數。Lambda 會執行函數，並傳回 API Gateway 的回應。API Gateway 隨後將該回應傳回給您。

![\[在本教學課程中建立 REST API 的概觀。\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/getting-started-overview-rest.png)


若要完成此練習，您需要具有主控台存取權的 AWS 帳戶 和 AWS Identity and Access Management (IAM) 使用者。如需詳細資訊，請參閱[設定為使用 API Gateway](setting-up.md)。

**Topics**
+ [步驟 1：建立 Lambda 函數](#getting-started-rest-new-console-create-function)
+ [步驟 2：建立 REST API](#getting-started-rest-new-console-create-api)
+ [步驟 3：建立 Lambda 代理整合](#getting-started-rest-new-console-create-integration)
+ [步驟 4：部署 API](#getting-started-rest-new-console-deploy)
+ [步驟 5：調用 API](#getting-started-rest-new-console-invoke-api)
+ [(選用) 步驟 6：清理](#getting-started-cleanup-rest)

## 步驟 1：建立 Lambda 函數
<a name="getting-started-rest-new-console-create-function"></a>

您將使用 Lambda 函數作為您的 API 的後端。Lambda 只有在需要時才會執行程式碼，可自動從每天數項請求擴展成每秒數千項請求。

在本練習中，您將使用 Lambda 主控台中的預設 Node.js 函數。

**建立 Lambda 函數**

1. 在以下網址登入 Lambda 主控台：[https://console.aws.amazon.com/lambda](https://console.aws.amazon.com/lambda)。

1. 選擇 **Create function** (建立函數)。

1. 在 **Basic information** (基本資訊) 下，為 **Function name** (函數名稱) 輸入 **my-function**。

1. 其他所有選項請使用預設設定。

1. 選擇**建立函數**。

預設 Lambda 函數程式碼看起來與下面所示類似：

```
export const handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('The API Gateway REST API console is great!'),
    };
    return response;
};
```

您可以修改您的 Lambda 函數來進行本練習，只要函數的回應與 [API Gateway 要求的格式](set-up-lambda-proxy-integrations.md#api-gateway-simple-proxy-for-lambda-output-format)相符即可。

將預設回應內文 (`Hello from Lambda!`) 取代為 `The API Gateway REST API console is great!`。當您調用範例函數時，它會將 `200` 回應傳回至用戶端，並且包含更新的回應。

## 步驟 2：建立 REST API
<a name="getting-started-rest-new-console-create-api"></a>

接下來，您要建立具有根資源 (`/`) 的 REST API。

**若要建立 REST API**

1. 在以下網址登入 API Gateway 主控台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 執行以下任意一項：
   + 若要建立您的第一個 API，請針對 **REST API** 選擇**建置**。
   + 如果您之前已建立 API，則選擇**建立 API**，然後針對 **REST API** 選擇**建置**。

1.  對於**API 名稱**，輸入 **my-rest-api**。

1. 在**描述**，請輸入描述。

1. 將 **API 端點類型**保持設定為**區域**。

1. 針對 **IP 位址類型**，選擇 **IPv4**。

1. 選擇**建立 API**。

## 步驟 3：建立 Lambda 代理整合
<a name="getting-started-rest-new-console-create-integration"></a>

接下來，您要在根資源 (`/`) 上為 REST API 建立 API 方法，並使用代理整合將此方法與您的 Lambda 函數整合。在 Lambda 代理整合中，API Gateway 會將來自用戶端的傳入請求直接傳遞至 Lambda 函數。

**若要建立 Lambda 代理整合**

1. 選取 `/` 資源，然後選擇**建立方法**。

1. 針對**方法類型**，選取 `ANY`。

1. 針對**整合類型**，選取 **Lambda**。

1. 開啟 **Lambda 代理整合**。

1. 針對 **Lambda 函數**，輸入 **my-function**，然後選取您的 Lambda 函數。

1. 選擇**建立方法**。

## 步驟 4：部署 API
<a name="getting-started-rest-new-console-deploy"></a>

接下來，您要建立 API 部署，並將它與階段建立關聯。

**部署 API**

1. 選擇**部署 API**。

1. 針對**階段**，選取**新階段**。

1. 針對**階段名稱**，輸入 **Prod**。

1. 在**描述**，請輸入描述。

1. 選擇**部署**。

現在，用戶端可以呼叫您的 API。若要在部署 API 之前先行測試，您可以選擇性地選擇 **ANY** 方法，導覽至**測試**索引標籤，然後選擇**測試**。

## 步驟 5：調用 API
<a name="getting-started-rest-new-console-invoke-api"></a>

**若要調用您的 API**

1. 從主導覽窗格選擇**階段**。

1. 在**階段詳細資訊**下，選擇複製圖示以複製 API 的調用 URL。  
![\[在建立 REST API 之後，主控台會顯示 API 的調用 URL。\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/getting-started-rest-invoke-url.png)

1. 在 Web 瀏覽器中輸入調用 URL。

   完整 URL 看起來應該會像這樣：`https://abcd123.execute-api.us-east-2.amazonaws.com/Prod`。

   您的瀏覽器將向 API 傳送 `GET` 請求。

1. 驗證您的 API 的回應。您應該會在瀏覽器中看到文字 `"The API Gateway REST API console is great!"`。

## (選用) 步驟 6：清理
<a name="getting-started-cleanup-rest"></a>

為避免您的 產生不必要的成本 AWS 帳戶，請刪除您在本練習中建立的資源。下列步驟可刪除您的 REST API、Lambda 函數和關聯的資源。

**若要刪除 REST API**

1. 在**資源**窗格中，選擇 **API 動作**、**刪除 API**。

1. 在**刪除 API** 對話方塊中，輸入**確認**，然後選擇**刪除**。

**若要刪除 Lambda 函數**

1. 在以下網址登入 Lambda 主控台：[https://console.aws.amazon.com/lambda](https://console.aws.amazon.com/lambda)。

1. 在**函數**頁面上，選取您的函數。選擇 **動作**、**刪除**。

1. 在**刪除 1 函數**對話方塊中輸入 **delete**，然後選擇**刪除**。

**若要刪除 Lambda 函數的日誌群組**

1. 開啟 Amazon CloudWatch 主控台的 [Log groups](https://console.aws.amazon.com/cloudwatch/home#logs:) (記錄群組) 頁面。

1. 在**日誌群組**頁面上，選取函數的日誌群組 (`/aws/lambda/my-function`)。然後針對**動作**，選擇**刪除日誌群組**。

1. 在 **刪除日誌群組** 對話方塊中，選擇 **刪除** 。

**若要刪除 Lambda 函數的執行角色**

1. 開啟 IAM 主控台中的[角色頁面](https://console.aws.amazon.com/iam/home?#/roles)。

1. (選用) 在**角色**頁面的搜尋方塊中，輸入 **my-function**。

1. 選取函數的角色 (例如 `my-function-31exxmpl`)，然後選擇**刪除**。

1. 在**要刪除 `my-function-31exxmpl` 嗎？**對話方塊中，輸入角色的名稱，然後選擇**刪除**。

**提示**  
您可以使用 AWS CloudFormation 或 AWS Serverless Application Model () 自動化 AWS 資源的建立和清除AWS SAM。如需一些範例 CloudFormation 範本，請參閱 **awsdocs** GitHub 儲存庫中 [API Gateway 的範例範本](https://github.com/awsdocs/amazon-api-gateway-developer-guide/tree/main/cloudformation-templates)。