メニュー
Amazon API Gateway
開発者ガイド

Amazon API Gateway の概念

API Gateway

API Gateway は以下をサポートする AWS サービスです。

  1. バックエンド HTTP エンドポイント、AWS Lambda 関数、その他の AWS サービスを公開するための RESTful アプリケーションプログラミングインターフェイス (API) の作成、デプロイ、管理。

  2. フロントエンド HTTP エンドポイントによって公開された API メソッドの呼び出し。

API Gateway API

バックエンドの HTTP エンドポイント、Lambda 関数、またはその他の AWS サービスを使用して統合されているリソースおよびメソッドのコレクション。コレクションは、1 つ以上のステージでデプロイできます。API メソッドは、登録されたカスタムドメイン名と関連付けることができるフロントエンド HTTP エンドポイントを通じて呼び出されます。メソッドを呼び出す権限は、IAM ロールおよびポリシー、または API Gateway Lambda オーソライザー (以前のカスタムオーソライザー) を使用して付与されます。API は、バックエンドで認証される証明書を提示できます。通常、API リソースはアプリケーションロジックに従ってリソースツリーで整理されます。各 API リソースは、API Gateway でサポートされている一意の HTTP 動詞が必要な 1 つ以上の API メソッドを公開できます。

API 開発者または API 所有者

API Gateway デプロイメントを所有する AWS アカウント (プログラムによるアクセスもサポートするサービスプロバイダなど)。

アプリケーション開発者またはクライアント開発者

AWS アカウントを持っているか持っていないアプリケーション作成者であり、API 開発者によってデプロイされた API を操作します。アプリケーション開発者は API キーによって表すことができます。

API エンドポイント

API Gateway でのホスト名の API。これは特定のリージョンにデプロイされ、{rest-api-id}.execute-api.{region}.amazonaws.com 形式です。次のタイプの API エンドポイントがサポートされています。

  • エッジに最適化された API エンドポイント: 通常は AWS リージョンからのクライアントアクセスを容易にするための CloudFront ディストリビューションを使用し、指定されたリージョンにデプロイされる API Gateway API のデフォルトのホスト名。API リクエストは最寄の CloudFront 接続ポイント (POP) にルーティングされます。一般的にはこれによりって地理的に分散したクライアントへの接続時間が改善します。API は、API を作成するときにそのエンドポイントタイプを明示的に指定しない場合、エッジ最適化されています。

  • リージョンの API エンドポイント: 指定されたリージョンにデプロイされ、同じ AWS リージョン内の EC2 インスタンスなどのクライアントに対応する目的である API のホスト名。API リクエストは、CloudFront ディストリビューションを経由せず、リージョン固有の API Gateway を直接ターゲットとします。リージョン内のリクエストについては、リージョンエンドポイントは、CloudFront ディストリビューションへの不要なラウンドトリップをバイパスします。さらに、レイテンシーに基づくルーティングをリージョン別エンドポイントに適用して、同じリージョン別 API エンドポイント設定を使用し、同じカスタムドメイン名をデプロイされた各 API に設定し、さらにレイテンシーに基づく DNS レコードを Route 53 に設定してクライアントリクエストをレイテンシーが最も低いリージョンにルーティングして API を複数のリージョンにデプロイすることができます。

アプリケーションユーザー、エンドユーザー、またはクライアント

アプリケーションユーザーまたはエンドユーザーは、クライアントを使用して Amazon API Gateway の API にアクセスするエンティティです。クライアントは、API Gateway REST API、AWS CLI、または SDK を使用するモバイルアプリケーション、ウェブアプリケーション、またはデスクトップアプリケーションとすることができます。アプリケーションユーザーは、Amazon Cognito ID またはベアラートークンによって表すことができます。

API キー

API 所有者に代わって、API Gateway で生成される英数字の文字列。また、この文字列は、CSV ファイルなどの外部ソースからインポートすることもできます。この文字列は、API のアプリ開発者を識別するために使用されます。API 所有者は API キーを使用して、使用中のアプリに基づいて特定の API を許可または拒否することができます。

API デプロイとステージ

API デプロイは、API Gateway API リソースとメソッドのポイントインタイムスナップショットです。 クライアントで呼び出せるようにデプロイにアクセスできるようにするには、デプロイメントを 1 つ以上のステージと関連付ける必要があります。ステージは、API (例: 'dev'、'prod'、'beta'、'v2' など) のライフサイクルステータスへの論理的な参照です。API ステージの識別子は API ID とステージ名から構成されます。

メソッドリクエスト

API Gateway での API メソッドのパブリックインターフェイスであり、アプリケーション開発者が API を介してバックエンドにアクセスするために送る必要のあるパラメータと本文が定義されています。

統合リクエスト

API Gateway の内部インターフェイスであり、API Gateway がメソッドリクエストのパラメータと本文をバックエンドに必要な形式にマッピングする方法が定義されています。

統合レスポンス

API Gateway の内部インターフェイスであり、API Gateway がデータをマッピングする方法が定義されています。統合レスポンスには、バックエンドから受け取ったステータスコード、ヘッダー、ペイロードが、アプリケーション開発者用に定義された形式で含まれています。

メソッドレスポンス

API のパブリックインターフェイスであり、アプリケーション開発者が API Gateway に求めるステータスコード、ヘッダー、本文モデルが定義されています。

プロキシ統合

簡略化された API Gateway 統合の設定。HTTP プロキシ統合タイプまたは Lambda プロキシ統合タイプとしてプロキシ統合を設定できます。HTTP プロキシ統合の場合、API Gateway はフロントエンドと HTTP バックエンド間のリクエストとレスポンスの全体を渡します。Lambda プロキシ統合の場合、API Gateway は、バックエンドの Lambda 関数への入力としてリクエスト全体を送信します。API Gateway は、その後、Lambda 関数の出力をフロントエンドの HTTP 応答に変換します。プロキシ統合はプロキシリソースとともに最もよく使用されます。プロキシリソースは、greedy パス変数 ({proxy+} など) とキャッチオールの ANY メソッドの組み合わせによって表されます。

マッピングテンプレート

Velocity Template Language (VTL)」で表現されるスクリプト。リクエスト本文を、フロントエンドデータ形式からバックエンドのデータ形式に変換します。または、バックエンドのデータ形式からフロントエンドのデータ形式に変換します。マッピングテンプレートは、統合リクエストまたは統合レスポンスで指定されます。コンテキストおよびステージ変数として、実行時に利用できるデータを参照できます。アイデンティティ転換は、パススルーと呼ばれます。リクエストの場合、ペイロードは、パススルーでクライアントからバックエンドにそのまま渡されます。レスポンスの場合、ペイロードはバックエンドからクライアントに渡されます。

モデル

リクエストまたはレスポンスペイロードのデータ構造を指定するデータスキーマ。API の厳密に型指定された SDK を生成するために必要です。また、ペイロードの検証にも使用されます。モデルは、サンプルマッピングテンプレートを生成して本稼働マッピングテンプレートの作成を開始するうえで役立ちます。このモデルは有益ですが、マッピングテンプレートを作成するうえで必須ではありません。

使用量プラン

使用量プランにより、選択した API クライアントは、1 つ以上の API にアクセスできます。使用料プランを使用して、スロットリングとクォータ制限を設定できます。これらは、個々のクライアント API キーに適用されます。