Amazon API Gateway
開発者ガイド

Amazon API Gateway とは

Amazon API Gateway は、規模に関係なく、独自の REST および WebSocket API を作成、公開、保守、モニタリング、保護できる AWS のサービスです。AWS または他のウェブサービス、AWS クラウドに保存されているデータにアクセスする、堅牢かつ安全でスケーラブルな API を作成できます。独自のクライアントアプリケーション (アプリ) で使用するための API を作成できます。または、API をサードパーティーのアプリ開発者に対して使用可能にできます。

これは HIPAA 対象サービスです。AWS、米国 Health Insurance Portability and Accountability Act of 1996 (HIPAA)、および AWS サービスを使用した保護されるべき医療情報 (PHI) の処理、保存、転送に関する詳細については、「HIPAA 概要」を参照してください。

API Gateway のアーキテクチャー

API Gateway のアーキテクチャを次の図に示します。


                API Gateway アーキテクチャの図

図で示されているように、アプリケーション (またはクライアントアプリケーション) は AWS でホストされている 1 つまたは複数の API を介して、API Gateway のサービスまたはインターネット上のウェブサイトでプログラムによるアクセスを取得します。このアプリケーションは、API のフロントエンドで表示されます。統合された AWS のサービスおよびウェブサイトは、API のバックエンドにあります。

Amazon API Gateway を使用すると、API をビルドして、AWS クラウドベースのアプリケーションを構築するために、統合された一貫性のある開発者エクスペリエンスをユーザーに提供できます。

API Gateway の利点

Amazon API Gateway には次のような利点があります。

  • ステートフル (WebSocket) およびステートレス (REST) API のサポート

  • AWS Lambda、Amazon Kinesis、Amazon DynamoDB などの AWS のサービスとの統合

  • IAM ロールとポリシー、AWS Lambda オーソライザー、または Amazon Cognito ユーザープールを使用して API へのアクセスを許可する機能

  • API を SaaS として販売するための使用量プランと API キー

  • 変更を安全に進めるための Canary リリースのデプロイ

  • API の使用状況と API の変更に関する CloudTrail ログ記録とモニタリング

  • アラームの設定機能を含む、CloudWatch アクセスのログ記録と実行のログ記録

  • AWS CloudFormation テンプレートを使用して API の作成を有効にする機能

  • カスタムドメイン名のサポート

API Gateway を使用した WebSocket API の作成

WebSocket API では、クライアントとサーバーの両方がいつでも相互にメッセージを送信できます。バックエンドサーバーは接続されたユーザーとデバイスに簡単にデータをプッシュでき、複雑なポーリングメカニズムを実装する必要がありません。

たとえば、API Gateway WebSocket API と AWS Lambda を使用してサーバーレスアプリケーションを構築し、チャットルームで個々のユーザーまたはユーザーのグループとの間でメッセージを送受信することができます。または、メッセージの内容に基づいて、AWS Lambda、Amazon Kinesis、HTTP エンドポイントなどのバックエンドサービスを呼び出すことができます。

API Gateway WebSocket API を使用して、安全なリアルタイムの通信アプリケーションを構築でき、接続または大規模なデータ交換を管理するためにサーバーをプロビジョニングまたは管理する必要がありません。ターゲットを絞ったユースケースには、次のようなリアルタイムのアプリケーションが含まれます。

  • チャットアプリケーション

  • 株式相場表示などのリアルタイムのダッシュボード

  • リアルタイムのアラートおよび通知

API Gateway は、次のような WebSocket API 管理機能を提供します。

  • 接続とメッセージのモニタリングとスロットリング

  • AWS X-Ray を使用した、API からバックエンドサービスへのメッセージのトレース。

  • HTTP/HTTPS エンドポイントとの簡単な統合

API Gateway を使用した REST API の作成

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 を使用することでペイロードのスキーマまたはモデルを定義し、本文マッピングテンプレートを容易に設定できるようにします。

API Gateway は、次のような REST API 管理機能を提供します。

  • OpenAPI に対する API Gateway 拡張を使用した SDK の生成と API ドキュメントの作成のサポート。

  • HTTP リクエストのスロットリング

API Gateway を使用するユーザー

API Gateway を使用するのは、API 開発者とアプリ開発者です。

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

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

アプリ開発者は、API 開発者の顧客です。アプリ開発者には、AWS アカウントは必要ありません。これは、API に IAM のアクセス権限が必要ないか、「Amazon Cognito ユーザープール ID フェデレーション」によってサポートされているサードパーティーのフェデレーテッド ID プロバイダーのユーザー認証をサポートしていることを前提としているためです。そのような ID プロバイダーには、Amazon、Amazon Cognito ユーザープール、Facebook、Google などがあります。

API Gateway API の作成と管理

API 開発者は API 管理に API Gateway サービスコンポーネント (apigateway) を使用して、API を作成、設定、およびデプロイします。各 API には、リソースとメソッドのセットが含まれています。リソースは、リソースパスを介してアプリがアクセスできる論理エンティティを表します。

API 開発者として、API を作成および管理するには、「API Gateway V1 および V2 API リファレンス」の説明に従って、API Gateway コンソールを使用するか、「Amazon API Gateway で REST API の使用を開始する」を呼び出します。API を呼び出す方法には、複数の方法があります。たとえば、AWS コマンドラインインターフェイス (CLI)、または AWS SDK を使用する方法があります。また、AWS CloudFormation テンプレートまたは「OpenAPI に対する API Gateway 拡張」を使用して (REST API の場合)、API を作成することもできます。API Gateway を使用できるリージョン、および関連する管理サービスエンドポイントのリストについては、「リージョンとエンドポイント」を参照してください。

API Gateway API を呼び出す

アプリ開発者は API の実行に execute-api という API Gateway サービスコンポーネントを使用し、API Gateway で作成またはデプロイされた API を呼び出します。基礎となるプログラミングエンティティは、作成された API によって公開されます。このような API を呼び出す方法はいくつかあります。API Gateway コンソールを使用して、API の呼び出しをテストします。REST API の場合、REST API クライアント (例: cURL、Postman、または API Gateway で API 用に生成された SDK) を使用して、API を呼び出すことができます。

AWS サーバーレスインフラストラクチャの一部

API Gateway は、AWS Lambda と連携して、AWS サーバーレスインフラストラクチャのうち、アプリケーション向け部分を形成します。アプリケーションで一般的に利用可能な AWS のサービスを呼び出す場合は、Lambda を使用して必要なサービスを操作し、API Gateway の API メソッドを使用して Lambda 関数を呼び出すことができます。AWS Lambda では、可用性に優れたコンピューティングインフラストラクチャでコードを実行します。また、必要に応じて、コンピューティングリソースを実行および管理します。サーバーレスアプリケーションを有効にするために、API Gateway では、AWS Lambda および HTTP エンドポイントを使用したプロキシ統合の効率化をサポートしています。