Amazon API Gateway
開発者ガイド

Amazon API Gateway での REST API のデプロイ

API を作成したら、この API をデプロイしてユーザーが呼び出せるようにする必要があります。

API をデプロイするには、API デプロイを作成し、それをステージに関連付けます。各ステージは、API のスナップショットであり、クライアントアプリが呼び出し可能になります。

重要

ルート、メソッド、統合、オーソライザー、およびステージ設定以外の変更が含まれている API を更新するたびに、API を既存のステージまたは新しいステージに再デプロイする必要があります。

API が進化するにつれて、API の異なるバージョンとしてさまざまなステージにデプロイし続けることができます。また、API の更新を Canary リリースのデプロイとしてデプロイすることもできます。これにより、API クライアントは、同じステージで、本稼働リリースを通じて本稼働バージョンにアクセスし、Canary リリースを通じて更新バージョンにアクセスできます。

デプロイされた API を呼び出すために、クライアントは API の URL に対してリクエストを送信します。URL は、API のプロトコル (HTTP(S) または (WSS))、ホスト名、ステージ名、および (REST API の場合) リソースパスによって決定されます。ホスト名とステージ名によって、API のベース URL が決まります。

API のデフォルトドメイン名を使用すると、特定のステージ ({stageName}) の REST API のベース URL は、たとえば次の形式になります。

https://{restapi-id}.execute-api.{region}.amazonaws.com/{stageName}

API のデフォルトのベース URL をよりユーザーフレンドリなものにするには、カスタムドメイン名 (例: api.example.com) を作成し、API のデフォルトのホスト名と置き換えることができます。カスタムドメイン名で複数の API をサポートするには、API ステージをベースパスにマッピングする必要があります。

{api.example.com} のカスタムドメイン名と API ステージがカスタムドメイン名の下の ({basePath}) ベースパスにマップされると、REST API のベース URL は次のようになります。

https://{api.example.com}/{basePath}

ステージごとに、アカウントレベルのデフォルトのリクエストスロットリング制限を調整し、API キャッシュを有効にすることで、API のパフォーマンスを最適化できます。また、API コールのログを CloudTrail や CloudWatch に記録したり、バックエンドで API リクエストを認証するためのクライエント証明書を選択したりできます。さらに、実行時に、ステージ固有の環境コンテキストを API 統合に渡すために、個々のメソッドのステージレベル設定をオーバーライドし、ステージ変数を定義することができます。API ステージでは、API 定義をエクスポートし、ユーザーがサポートされているプログラミング言語を使用して API を呼び出すための SDK を生成できます。

ステージを使用すると、API の堅牢なバージョン管理が可能になります。たとえば、API を test ステージと、prod ステージにデプロイし、test ステージをテストビルドとして使用し、prod ステージを安定したビルドとして使用できます。更新がテストに合格したら、test ステージを prod ステージに昇格させることができます。昇格は、API を prod 本稼働ステージに再デプロイするか、ステージ変数値を test ステージ名から prodステージ変数に更新することによって行うことができます。

また、新しい変更をテストするための canary リリースを含めることもできます。これは canary リリースのデプロイと呼ばれます。これにより、ベースバージョンと API の更新バージョンが同じステージで使用できるようになり、ベースバージョンと同じ環境に新しい機能を導入することができます。詳細については、「API Gateway Canary リリースのデプロイをセットアップする」を参照してください。

このセクションでは、API Gateway コンソールを使用して、または、API Gateway REST API を呼び出して API をデプロイする方法について説明します。他のツールを使用して同じ操作を行うには、AWS CLIAWS SDK などのドキュメントを参照してください。