

# 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 など) によって定義されるオペレーションを 1 つ以上含めることができます。リソースパスとオペレーションの組み合わせによって 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 拡張を使用した SDK の生成と API ドキュメントの作成のサポート。
+ HTTP リクエストのスロットリング

## API Gateway を使用して HTTP API を作成する
<a name="api-gateway-overview-http"></a>

HTTP API を使用すると、REST API よりも低いレイテンシーとコストで RESTful API を作成することができます。

HTTP API を使用して、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 管理機能を提供します。
+ 接続とメッセージのモニタリングとスロットリング
+ API からバックエンドサービスを通過するメッセージの AWS X-Ray を使用したトレース
+ HTTP/HTTPS エンドポイントとの簡単な統合

## API Gateway を使用するユーザー
<a name="apigateway-who-uses-api-gateway"></a>

API Gateway を使用するのは、API デベロッパーとアプリデベロッパーです。

API デベロッパーは API Gateway で必要な機能を使用できるようにするため、API を作成しデプロイします。API 開発者は、API を所有する AWS アカウントのユーザーである必要があります。

アプリケーションデベロッパーは、API Gateway で API デベロッパーによって作成された WebSocket または REST API を呼び出して、AWS のサービスを呼び出すために機能するアプリケーションを構築します。

アプリ開発者は、API 開発者の顧客です。アプリケーションデベロッパーに AWS アカウントは必要ありませんが、API に IAM 許可が必要ないか、[Amazon Cognito ユーザープール ID フェデレーション](https://docs.aws.amazon.com/cognito/latest/developerguide/)によってサポートされているサードパーティーのフェデレーテッド ID プロバイダー経由でのユーザー認可をサポートしていることが条件となります。そのような ID プロバイダーには、Amazon、Amazon Cognito ユーザープール、Facebook、Google などがあります。

### API Gateway API の作成と管理
<a name="api-gateway-overview-developer-experience-managing-api"></a>

API デベロッパーは API 管理に API Gateway サービスコンポーネント (`apigateway`) を使用して、API を作成、設定、およびデプロイします。

API デベロッパーとして、API を作成および管理するには、「[API Gateway の使用を開始する](getting-started.md)」の説明に従って、API Gateway コンソールを使用するか、「[API リファレンス](api-ref.md)」を呼び出します。API を呼び出す方法には、複数の方法があります。これには、AWS Command Line Interface (AWS CLI) の使用や AWS SDK の使用が含まれます。また、[AWS CloudFormation テンプレート](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.html)または [API Gateway の OpenAPI 拡張機能](api-gateway-swagger-extensions.md) (REST API および HTTP API の場合) を使用して、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>

アプリデベロッパーは API の実行に `execute-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)」を参照してください。