

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

# 管理 APIs
<a name="apis"></a>

適當的 API 管理可讓您的微型服務可供內部和外部消費者存取。 AWS 提供各種服務，您可以一起用來安全地公開您的微型服務 APIs。這些服務可讓您強制執行 APIs的安全性，並從中央位置實作監控和可觀測性。如果您的 APIs 使用者與託管服務的 地理位置相距，您也可以使用 [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) AWS 區域 來改善效能。

## Amazon API Gateway
<a name="api-gateway"></a>

[Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 是一項全受管服務，可讓開發人員建立、發佈、維護、監控和保護任何規模的 REST 和 WebSocket APIs。您可以使用 API Gateway 實作本指南通訊[模式一節所述的許多模式](communication-patterns.md)。

REST APIs 有兩種主要類型：REST 和 HTTP。這兩種類型都支援 RESTful APIs但提供不同的功能。若要判斷最符合您的需求，請參閱 [ APIs Gateway 文件中的選擇 REST APIs和 HTTP](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html) API。本指南的本節著重於 API Gateway REST APIs。

使用 API Gateway 做為 APIs的進入點提供單一位置來實作常見的考量，例如請求驗證和安全性。API Gateway REST APIs提供[請求驗證](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html)，可讓您使用 [JSON 結構描述](https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04)定義請求的格式。API Gateway 會根據您定義的結構描述驗證傳入請求，並拒絕格式不正確的請求。

### 身分驗證和授權
<a name="authentication-authorization"></a>

API Gateway REST APIs支援下列身分驗證 (authN) 和授權 (authZ) 機制：
+ **IAM** – 如果您使用 IAM，則必須使用 [AWS Signature 第 4 版 (SigV4) 簽署對 API ](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)的請求。
+ **Amazon Cognito** – API Gateway 將驗證呈現的承載字符是否由 Amazon Cognito 使用者集區發出。如果您已經在使用第三方身分提供者 (IdP)，也可以設定 Amazon Cognito 使用者集區來整合。您也可以使用 Amazon Cognito 使用者集區進行machine-to-machine(M2M) 身分驗證。
+ **AWS Lambda 授權方** – API Gateway 會叫用您指定的 Lambda 函數，以執行您想要的任何檢查，以判斷是否應授權請求。

如需詳細資訊，請參閱 [API Gateway 文件中的控制和管理對 REST APIs存取](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html)。

### API 金鑰和速率限制
<a name="keys-rate-limits"></a>

您可以使用 APIs金鑰和用量計劃，控制誰可以呼叫您的 API 和以什麼速率呼叫。API 金鑰不應用於身分驗證，但可與先前提到的方案搭配使用。使用者不一定需要提供自己的 API 金鑰，例如，Lambda 授權方可以傳回使用者的 API 金鑰。用量計劃可讓您指定輸送量、爆量限制和每月配額。如需詳細資訊，請參閱 [API Gateway 文件中的 REST APIs 的使用計劃和 API 金鑰](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html)。

### 公有和私有 APIs
<a name="public-private-apis"></a>

可透過網際網路存取的 API Gateway REST APIs 支援兩種端點類型：
+ 邊緣最佳化，這表示發起人的請求會路由到附近的 CloudFront 存在點 (POP)。這可以改善不同地理位置的用戶端的效能。
+ 區域，這表示請求路由到特定 內的資源 AWS 區域。當您的所有用戶端都靠近部署 API 的區域時，這是不錯的選擇。

API Gateway REST APIs也支援私有 API 端點，可透過使用界面 VPC 端點從虛擬私有雲端 (VPC) 存取。您也可以在其他 VPC 甚至其他 VPC 中建立介面 VPCs 端點，安全地共用私有 REST APIs AWS 帳戶。如需詳細資訊，請參閱 [API Gateway 文件中的 REST APIs API 端點類型](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html)。

### 何時使用 API Gateway
<a name="when-to-use"></a>

API Gateway 是 RESTful Web 服務和即時 WebSocket 連線的理想選擇。當您在 API Gateway 中使用 WebSocket APIs 時，您可以新增連線和中斷連線事件的行為，例如將連線 IDs儲存在與用戶端屬性相關聯的外部資料存放區中。您也可以使用訊息屬性，將請求路由到自訂行為。

REST 和 WebSocket APIs 都可以直接與許多 AWS 服務 整合，而無需單獨的運算資源，例如 Lambda 函數。這可以提高效能並降低成本。

REST APIs同時支援路徑型和標頭型路由，您可以單獨或一起使用。常見的模式是提供 REST API 做為許多 APIs，以實作先前討論的共用問題，然後採取類似反向代理的行為，並將授權請求路由到正確的 API 端點。