

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

# API Gateway 入門
<a name="getting-started"></a>

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

首先，您需使用 AWS Lambda 主控台建立 Lambda 函數。接著，您可以使用 API Gateway 主控台建立 HTTP API。然後，您將叫用 API。

**注意**  
本練習使用 HTTP API。API Gateway 也支援 REST API，其中包含更多功能。如需使用 REST API 的教學課程，請參閱 [開始使用 REST API 主控台](getting-started-rest-new-console.md)。  
如需 HTTP API 和 REST API 之間差異的詳細資訊，請參閱 [在 REST API 與 HTTP API 之間選擇](http-api-vs-rest.md)。

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

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


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

**Topics**
+ [步驟 1：建立 Lambda 函數](#getting-started-create-function)
+ [步驟 2：建立 HTTP API](#getting-started-create-api)
+ [步驟 3：測試您的 API](#getting-started-invoke-api)
+ [(選用) 步驟 4：清理](#getting-started-cleanup)
+ [後續步驟](#getting-started-next-steps)

## 步驟 1：建立 Lambda 函數
<a name="getting-started-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. 針對 **Function name** (函數名稱)，請輸入 **my-function**。

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

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

範例函數將 `200` 回應傳回給用戶端，以及文字 `Hello from Lambda!`。

您可以修改您的 Lambda 函數，函數的回應與 [API Gateway 要求的格式](http-api-develop-integrations-lambda.md#http-api-develop-integrations-lambda.response)要相符。

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

```
export const handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
```

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

接著，您將建立一個 HTTP API。API Gateway 還支援 REST API 和 WebSocket API，但 HTTP API 是此練習的最佳選擇。REST API 支援比 HTTP API 更多的功能，但本練習中不需要那些功能。HTTP API 設計為具有基本功能，因此能以較低的價格提供。WebSocket API 將維持與用戶端的持續連線，以進行全雙工通訊，這並非此範例所必須的。

HTTP API 將針對您的 Lambda 函數提供 HTTP 端點。API Gateway 會將請求路由至您的 Lambda 函數，然後將函數的回應傳回給用戶端。



**建立 HTTP API**

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

1. 請執行下列其中一項：
   + 若要建立您的第一個 API，針對 **HTTP API**，選擇 **Build** (建置)。
   + 如果您之前已建立 API，則選擇 **Create API** (建立 API)，然後針對 **HTTP API** 選擇 **Build** (建置)。

1. 針對 **Integrations** (整合)，選擇 **Add integration** (新增整合)。

1. 選擇 **Lambda**。

1. 對於 **Lambda function** (Lambda 函數)，請輸入 **my-function**。

1. 針對 **API name** (API 名稱)，請輸入 **my-http-api**。

1. 選擇 **Next** (下一步)。

1. 檢閱 API Gateway 為您建立的 *route* (路由)，然後選擇 **Next** (下一步)。

1. 檢閱 API Gateway 為您建立的 *stage* (階段)，然後選擇 **Next** (下一步)。

1. 選擇 **Create** (建立)。

現在，您已建立具有 Lambda 整合的 HTTP API，可隨時接收來自用戶端的請求。

## 步驟 3：測試您的 API
<a name="getting-started-invoke-api"></a>

接著，您將測試您的 API 以確保其正常工作。為簡單起見，請使用 Web 瀏覽器來叫用您的 API。

**測試您的 API**

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

1. 選擇您的 API。

1. 請注意 API 的叫用 URL。  
![\[在建立 API 之後，主控台會顯示 API 的叫用 URL。\]](http://docs.aws.amazon.com/zh_tw/apigateway/latest/developerguide/images/getting-started-invoke-url.png)

1. 複製 API 的叫用 URL，然後在 Web 瀏覽器中輸入。將 Lambda 函數的名稱附加至叫用 URL，以叫用 Lambda 函數。依預設，API Gateway 主控台會建立與 Lambda 函數相同名稱的路由 `my-function`。

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

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

1. 驗證您的 API 的回應。您應該會在瀏覽器中看到文字 `"Hello from Lambda!"`。

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

若要避免不必要的成本，請刪除您在此入門練習中建立的資源。採用下列步驟刪除您的 HTTP API、您的 Lambda 函數和相關資源。

**刪除 HTTP API**

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

1. 在 **API** 頁面上，選取 API。選擇 **Actions** (動作)，然後選擇 **Delete** (刪除)。

1. 選擇 **Delete** (刪除)。

**刪除 Lambda 函數**

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

1. 在 **Functions** (函數) 頁面上，選取函數。選擇 **Actions** (動作)，然後選擇 **Delete** (刪除)。

1. 選擇 **Delete** (刪除)。

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

1. 在 Amazon CloudWatch 主控台中，開啟 [Log groups](https://console.aws.amazon.com/cloudwatch/home#logs:) (日誌群組) 頁面。

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

1. 選擇 **Delete** (刪除)。

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

1. 在 AWS Identity and Access Management 主控台中開啟 [Roles](https://console.aws.amazon.com/iam/home?#/roles) (角色) 頁面。

1. 選取函數的角色，例如，`my-function-31exxmpl`。

1. 選擇 **Delete role** (刪除角色)。

1. 選擇 **Yes, delete** (是，刪除)。

您可以使用 CloudFormation 或 AWS SAM，將 AWS 資源的建立和清理作業自動化。如需 CloudFormation 範本範例，請參閱[範例 CloudFormation 範本](https://github.com/awsdocs/amazon-api-gateway-developer-guide/tree/main/cloudformation-templates)。

## 後續步驟
<a name="getting-started-next-steps"></a>

在此範例中，您使用了 AWS 管理主控台 來建立簡單的 HTTP API。HTTP API 叫用 Lambda 函數，並將回應傳回給用戶端。

以下是繼續使用 API Gateway 的後續步驟。
+ [設定其他類型的 API 整合，](http-api-develop-integrations.md)包括：
  + [HTTP 端點](http-api-develop-integrations-http.md)
  + [VPC 中的私有資源，例如 Amazon ECS 服務](http-api-develop-integrations-private.md)
  + [AWS 服務，例如 Amazon Simple Queue Service、AWS Step Functions 和 Kinesis Data Streams](http-api-develop-integrations-aws-services.md)
+ [控制對您的 API 的存取](http-api-access-control.md)
+ [啟用您的 API 的日誌記錄](http-api-logging.md)
+ [設定您的 API 節流](http-api-throttling.md)
+ [設定您的 API 的自訂網域](http-api-custom-domain-names.md)

若要從社群取得 Amazon API Gateway 的相關協助，請參閱 [API Gateway 開發論壇](https://repost.aws/tags/TAx94GNHn2R3Ot5Ab_HCvlng)。當您進入此論壇時，AWS 可能會要求您登入。

如需逕洽 AWS 獲取 API Gateway 的相關協助，請參閱 [AWS 支援頁面](https://aws.amazon.com/premiumsupport/)的支援選項。

另請參閱[常見問答集](https://aws.amazon.com/api-gateway/faqs/) (FAQ)，或[直接聯絡我們](https://aws.amazon.com/contact-us/)。