

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# API の管理
<a name="apis"></a>

適切な API 管理により、内部コンシューマーと外部コンシューマーの両方がマイクロサービスにアクセスできるようになります。 は、マイクロサービス APIs を安全に公開するために一緒に使用できるさまざまなサービス AWS を提供します。これらのサービスを使用すると、API のためのセキュリティ措置を実施し、モニタリングとオブザーバビリティを一元的に実装できます。API のユーザーが、サービスがホスト AWS リージョン されている から APIs 地理的に離れている場合、[Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) を使用してパフォーマンスを向上させることもできます。

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

[Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) は、デベロッパーが REST API と WebSocket API を作成、配布、保守、監視、保護するために規模を問わず使用できるようにするフルマネージドサービスです。API Gateway を使用して、本ガイドの「[コミュニケーションパターン](communication-patterns.md)」セクションで説明されている多くのパターンを実装できます。

REST API には、REST と HTTP の 2 つの主なタイプがあります。どちらのタイプも RESTful API をサポートしますが、異なる機能を提供します。ニーズに最適なものを判断するには、API Gateway ドキュメントの「[REST API と HTTP API から選択する](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html)」を参照してください。ガイドのこのセクションでは、API Gateway の REST API に焦点を当てます。

API Gateway を API のエントリポイントとして使用すると、リクエストの検証やセキュリティなどの一般的な懸念事項を一元的に対処できます。API Gateway REST API では、[リクエスト検証](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 API は、次の認証 (authN) および認可 (authZ) メカニズムをサポートしています。
+ **IAM** – IAM を使用する場合は、[AWS Signature Version 4 (SigV4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) を使用して API へのリクエストに署名する必要があります。
+ **Amazon Cognito** – API Gateway は、提示されたベアラートークンが Amazon Cognito ユーザープールによって発行されたものであるかを検証します。Amazon Cognito ユーザープールを既に使用している場合は、サードパーティー ID プロバイダー (IdP) と統合するように設定することもできます。machine-to-machine (M2M) 認証に Amazon Cognito ユーザープールを使用することもできます。
+ **AWS Lambda オーソライザー** – API Gateway は、指定した Lambda 関数を呼び出して、必要なチェックを実行し、リクエストを承認する必要があるかどうかを判断します。

詳細については、API Gateway ドキュメントの「[REST API へのアクセスのコントロールと管理](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html)」を参照してください。

### API キーとレート制限
<a name="keys-rate-limits"></a>

API キーと使用量プランを使用して、API を呼び出すことができるユーザーとレートをコントロールできます。API キーは認証には使用してはなりませんが、前述のスキームと組み合わせて使用できます。ユーザーは必ずしも独自の API キーを提供する必要はありません。例えば、Lambda オーソライザーはユーザーの API キーを返すことができます。使用量プランでは、スループット、バースト制限、月間クォータを指定できます。詳細については、API Gateway ドキュメントの「[REST API の使用量プランと API キー](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html)」を参照してください。

### パブリック API とプライベート API
<a name="public-private-apis"></a>

インターネット経由でアクセスできる API Gateway REST API は、次の 2 つのエンドポイントタイプをサポートしています。
+ エッジ最適化。つまり、発信者のリクエストは近くの CloudFront の Point of Presence (POP) にルーティングされます。これにより、地理的に異なるクライアントのパフォーマンスが向上する可能性があります。
+ リージョン別。つまり、リクエストは特定の AWS リージョン内のリソースにルーティングされます。これは、すべてのクライアントが API がデプロイされているリージョンの近くにある場合に適しています。

API Gateway REST API は、インターフェイス VPC エンドポイントを使用して仮想プライベートクラウド (VPC) からアクセスできるプライベート API エンドポイントもサポートしています。また、インターフェイス VPC エンドポイントを他の VPC やその他の AWS アカウントに作成することで、プライベート REST API を安全に共有することもできます。詳細については、API Gateway ドキュメントの「[REST API の 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 ウェブサービスとリアルタイム WebSocket 接続に適しています。API Gateway で WebSocket API を使用する場合、接続 ID をクライアント属性に関連付けられた外部データストアに保存するなど、接続イベントと切断イベントの動作を追加できます。メッセージ属性を使用して、リクエストをカスタム動作にルーティングすることもできます。

REST API と WebSocket API はどちらも、Lambda 関数などの個別のコンピューティングリソースを必要とせずに、多くの AWS のサービス と直接統合できます。これにより、パフォーマンスを向上させ、コストを削減できます。

REST API は、パスベースとヘッダーベースのルーティングの両方をサポートし、個別に使用することも、一緒に使用することもできます。一般的なパターンは、REST API を多数の API のフロントドアとして提供し、前述のように共通の懸念を実装し、リバースプロキシのように動作して、承認されたリクエストを正しい API エンドポイントにルーティングすることです。