

# API Gateway で REST API のステージをセットアップする
<a name="set-up-stages"></a>

ステージは、デプロイに対する名前付きのリファレンスで、API のスナップショットです。[Stage (ステージ)](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html)を使用して、特定のデプロイを管理および最適化します。たとえば、ステージ設定を設定して、キャッシングを有効にしたり、リクエストスロットリングをカスタマイズしたり、ログ記録を設定したり、ステージ変数を定義したり、テストのために Canary リリースをアタッチしたりすることができます。次のセクションでは、ステージを作成して設定する方法を示します。

## 新しいステージを作成する
<a name="how-to-create-stage-console"></a>

 最初のデプロイ後に、さらにステージを追加して既存のデプロイに関連付けることができます。API Gateway コンソールを使用して新しいステージを作成して使用するか、API をデプロイするときに既存のステージを選択できます。通常は、API を再デプロイする前に、API デプロイに新しいステージを追加できます。API Gateway コンソールを使用して新しいステージを作成するには、次の手順に従います。

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. REST API を選択します。

1. メインナビゲーションペインで、API の下にある **[ステージ]** を選択します。

1. **[ステージ]** ナビゲーションペインから、**[ステージの作成]** を選択します。

1.  **[ステージ名]** に、名前を入力します（例: **prod**）。
**注記**  
ステージ名には、英数字、ハイフン、およびアンダースコアのみ含めることができます。最大長は 128 文字です。

1.  (オプション)。**[説明]** に、ステージの説明を入力します。

1. **[デプロイメント]** には、このステージに関連付ける既存の API デプロイの日付と時刻を選択します。

1. **[追加設定]** では、ステージの追加設定を指定できます。

1. **[テーブルの作成]** を選択します。

## ステージ設定の変更
<a name="how-to-stage-settings"></a>

API が正常にデプロイされると、ステージにデフォルト設定が入力されます。API キャッシュやログ記録などのステージ設定は、コンソールまたは API Gateway REST API を使用して変更できます。REST API のデフォルトエンドポイントを変更した場合、ステージを更新すると、その変更は API のすべてのステージに反映されます。次の手順では、API Gateway コンソールの**ステージエディタ**を使用してその方法を示します。

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. REST API を選択します。

1. メインナビゲーションペインで、API の下にある **[ステージ]** を選択します。

1. [**Stages**] (ステージ) ペインで、ステージの名前を選択します。

1. **[ステージの詳細]** セクションで、**[編集]** を選択します。

1. (オプション) **[ステージの説明]** で、説明を編集します。

1. **[その他の設定]** で、以下の設定を変更します。

     
**キャッシュ設定**  
ステージの API キャッシュを有効にするには、**[API キャッシュをプロビジョニング]** をオンにします。次に、**[デフォルトのメソッドレベルのキャッシュ]**、**[キャッシュキャパシティ]**、**[キャッシュデータを暗号化]**、**[キャッシュの有効期限 (TTL)]**、およびキーごとのキャッシュの無効化の要件を設定します。  
デフォルトのメソッドレベルのキャッシュをオンにするか、特定のメソッドについてメソッドレベルのキャッシュをオンにするまで、キャッシュはアクティブになりません。  
キャッシュ設定の詳細については、「[API Gateway での REST API のキャッシュ設定](api-gateway-caching.md)」を参照してください。  
API ステージの API キャッシュを有効にすると、AWS アカウントに対して API キャッシュの使用料金が発生することがあります。キャッシュは AWS 無料利用枠の対象ではありません。  
**スロットリング設定**  
この API に関連付けられたすべてのメソッドに対してステージレベルのスロットリング目標を設定するには、**[スロットリング]** をオンにします。  
[**Rate**] (レート) に目標レートを入力します。これは、トークンバケットにトークンを追加するレート (秒あたりのリクエスト数) です。ステージレベルのレートは、[アカウントレベル](api-gateway-request-throttling.md#apig-request-throttling-account-level-limits)のレート ([API Gateway での REST API の設定および実行に関するクォータ](api-gateway-execution-service-limits-table.md) で指定) を超えないものとします。  
**[バースト]** に目標バーストレートを入力します。バーストレートとは、トークンバケットの容量です。これにより、目標レートよりも多くのリクエストが一定の期間にわたって許可されます。このステージレベルのバーストレートは、[アカウントレベル](api-gateway-request-throttling.md#apig-request-throttling-account-level-limits)のバーストレート ([API Gateway での REST API の設定および実行に関するクォータ](api-gateway-execution-service-limits-table.md) で指定) を超えないものとします。  
スロットリングレートはハードリミットではなく、ベストエフォートベースで適用されます。場合によっては、クライアントは設定されている目標を超えることがあります。コストの管理や API へのアクセスのブロックを行う際にスロットリングに依存しないでください。[AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) を使用してコストをモニタリングすること、および [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) を使用して API リクエストを管理することを検討してください。  
**ファイアウォールと証明書の設定**  
AWS WAF ウェブ ACL をステージに関連付けるには、**[ウェブ ACL]** ドロップダウンリストからウェブ ACL を選択します。必要に応じて、[**Block API Request if WebACL cannot be evaluated (Fail- Close) (WebACL を評価できない場合は API リクエストをブロックする (フェイルクローズ))**] を選択します。  
ステージのクライアント証明書を選択するには、**[クライアント証明書]** ドロップダウンメニューから証明書を選択します。

1. [**続行**] をクリックしてください。

1. 変更内容を確認してから、**[変更を保存]** を選択します。

1. この API Gateway API のこのステージに関連付けられているすべてのメソッドで Amazon CloudWatch Logs を有効にするには、**[ログとトレース]** セクションで **[編集]** を選択します。
**注記**  
CloudWatch Logs を有効にするには、ユーザーの代わりに API Gateway が CloudWatch Logs に情報を書き込むことを可能にする IAM ロールの ARN も指定する必要があります。そのためには、[**API**] メインナビゲーションペインから [**設定**] を選択します。次に、**[CloudWatch ログロール]** に IAM ロールの ARN を入力します。  
一般的なアプリケーションシナリオでは、IAM ロールは [AmazonAPIGatewayPushToCloudWatchLogs](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAPIGatewayPushToCloudWatchLogs.html) のマネージドポリシーをアタッチできます。  
IAM ロールには、以下の信頼関係ステートメントも含まれている必要があります。  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "apigateway.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```
  
Amazon CloudWatch の詳細については、*[Amazon CloudWatch ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)*を参照してください。

1. **[CloudWatch Logs]** ドロップダウンメニューからログ記録レベルを選択します。ログ記録レベルは、以下のとおりです。
   + **オフ** — この段階ではログ記録はオンになっていません。
   + **エラーのみ** — ログ記録はエラーに対してのみ有効になっています。
   + **エラーと情報ログ** — ログ記録はすべてのイベントに対して有効になっています。

1. **[データトレース]** を選択すると、API Gateway がステージのデータトレースログを CloudWatch に報告します。このログは API のトラブルシューティングに役立ちますが、機密データが記録される可能性があります。
**注記**  
本番稼働用 API では **[データトレース]** を有効にしないことをお勧めします。

1. API Gateway から CloudWatch に `API calls`、`Latency`、`Integration latency`、`400 errors`、`500 errors` の API メトリクスをレポートするには、**[詳細なメトリクス]** を選択します。CloudWatch の詳細については、「Amazon CloudWatch ユーザーガイド」の「[基本モニタリングと詳細モニタリング](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-basic-detailed.html)」を参照してください。
**重要**  
アカウントではメソッドレベルの CloudWatch メトリクスへのアクセスに対して課金されますが、API レベルまたはステージレベルのメトリクスでは課金されません。

1. 送信先へのアクセスログを有効にするには、**[カスタムのアクセスログ]** をオンにします。

1. **[アクセスログの送信先 ARN]** に、ロググループまたは Firehose ストリームの ARN を入力します。

   Firehose の ARN 形式は `arn:aws:firehose:{{{region}}}:{{{account-id}}}:deliverystream/amazon-apigateway-{{{your-stream-name}}}` です。Firehose ストリームの名前は `amazon-apigateway-{{{your-stream-name}}}` にする必要があります。

1. **[ログの形式]** にログの形式を入力します。ログ形式の例について詳しくは、「[API Gateway での CloudWatch によるログの形式](set-up-logging.md#apigateway-cloudwatch-log-formats)」を参照してください。

1. API ステージで [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-apigateway.html) トレースを有効にするには、**[X-Ray トレース]** を選択します。詳細については、「[API Gateway で X-Ray を使用して REST API へのユーザーリクエストをトレースする](apigateway-xray.md)」を参照してください。

1. **[Save changes]** (変更の保存) をクリックします。API を再デプロイして新しい設定を有効にします。

## ステージレベルの設定のオーバーライド
<a name="how-to-method-override"></a>

ステージレベルの設定をカスタマイズしたら、API メソッドごとにそれらを上書きできます。オプションによっては、AWS アカウントに追加料金がかかる場合があります。

1. メソッドのオーバーライドを設定するには、セカンダリナビゲーションペインでステージを展開し、メソッドを選択します。  
![セカンダリナビゲーションペインでステージを展開し、メソッドを選択します。](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/method-override-view-new-console.png)

1. 次に、**[メソッドオーバーライド]** で **[編集]** を選択します。

1. メソッドレベルの CloudWatch 設定を有効にするには、**CloudWatch Logs** でログ記録レベルを選択します。

1. メソッドのデータトレースログ記録を有効にするには、**[データトレース]** を選択します。
**注記**  
本番稼働用 API では **[データトレース]** を有効にしないことをお勧めします。

1. メソッドレベルの詳細メトリクスを有効にするには、**[詳細なメトリクス]** を選択します。アカウントではメソッドレベルの CloudWatch メトリクスへのアクセスに対して課金されますが、API レベルまたはステージレベルのメトリクスでは課金されません。

1. メソッドレベルのスロットリングを有効にするには、**[スロットリング]** を選択します。適切なメソッドレベルのオプションを入力します。スロットリングの詳細については、「[API Gateway のスループットを向上させるために REST API へのリクエストをスロットリングする](api-gateway-request-throttling.md)」を参照してください。

1. メソッドレベルのキャッシュを設定するには、**[メソッドキャッシュを有効にする]** を選択します。**[ステージの詳細]** でデフォルトのメソッドレベルのキャッシュ設定を変更しても、この設定には影響しません。

1. **[保存]** を選択します。