API Gateway API をトラブルシューティングするために CloudWatch ログを有効化するにはどうすればよいですか?

最終更新日: 2019 年 9 月 26 日

開発している Amazon API Gateway API のエラーをデバッグする必要があります。API をトラブルシューティングするためにログを有効にするにはどうすればよいですか?

簡単な説明

開発中の API Gateway API をトラブルシューティングするには、Amazon CloudWatch Logs への実行ログの記録を有効にします。実行ログには、Amazon API Gateway API のほとんどのエラーを特定して修正するために使用できる、役に立つ情報が含まれています。この情報には以下が含まれます。

これらのログを有効にするには、CloudWatch に対してログの読み取りと書き込みを行う許可を API Gateway に提供する AWS Identity and Access Management (IAM) ロールを作成してから、特定の API とステージのためにログを有効にします。

解決方法

CloudWatch へのログ記録用の IAM ロールを作成する

  1. IAM コンソールの左にあるナビゲーションペインで [ロール] を選択します。
  2. [ロール] ペインで [ロールの作成] を選択します。
  3. [ロールの作成] ページで、次の手順を実行します。
    [信頼されたエンティティの種類を選択] で [AWS サービス] を選択します。
    [このロールを使用するサービスを選択] で [API Gateway] を選択します。
    [次のステップ: アクセス権限] を選択します。
  4. [Attached アクセス権限ポリシー] では、AWS が管理するポリシーである AmazonAPIGatewayPushToCloudWatchLogs がデフォルトで選択されていることに注意してください。このポリシーには、必要なアクセス権限のすべてがあります。
  5. [次のステップ: タグ] を選択します。
  6. 希望する場合はオプションでタグを追加し、その後 [次のステップ: 確認] を選択します。
  7. [確認] で以下を行います。
    [ロール名] には、ロールにとって意味のある名前を入力します。
    (オプション) [ロールの説明] の説明を希望に応じて編集します。
    [ロールの作成] を選択します。
  8. 作成したロールの名前を [ロール] ペインの検索バーに入力し、検索結果からそのロールを選択します。
  9. [概要] ペインで [ロール ARN] をコピーします。これは、次のセクションの [Amazon リソースネーム (ARN)] で必要になります。

詳細については、「CloudWatch ログ記録のアクセス許可」を参照してください。

API Gateway コンソールで IAM ロールを追加する

注意: 異なる AWS リージョン間で複数の API を開発している場合は、各リージョンでこれらのステップを完了してください。

  1. API Gateway コンソールの左にあるナビゲーションペインで [設定] を選択します。
  2. [CloudWatch ログのロール ARN] に、コピーした IAM ロール ARN を貼り付けます。
  3. [保存] を選択します。
    注意: コンソールは ARN が正常に保存されたことを確認しません。

API とステージのログ記録を有効にする

  1. API Gateway コンソールステージエディターを見つけます
  2. [ステージエディター] ペインで [ログ/トレース] タブを選択します。
  3. [ログ/トレース] タブにある [CloudWatch 設定] で [CloudWatch ログを有効化] チェックボックスにチェックを入れます。
  4. [ログレベル] には、すべてのリクエストのログを生成するために [INFO] を選択します。または、[ERROR] を選択して、エラーになった API へのリクエストのみのログを生成します。
  5. REST API の [リクエスト/レスポンスをすべてログ] チェックボックスにチェックを入れます。または、WebSocket API のために [メッセージデータをすべてログ] チェックボックスにチェックを入れます。
  6. [変更を保存] を選択します。
    注意: コンソールはこれらの設定が正常に保存されたことを確認しません。

詳細については、「API Gateway コンソールを使用して API ログ作成をセットアップする」を参照してください。

ログ記録の設定をテストする

  1. クライアントアプリケーション、または Postman アプリwscat (WebSocket API 向け) などのツールを使用して、API Gateway API への新しいリクエストを作成します。
  2. CloudWatch コンソールの左にあるナビゲーションペインで [Logs] (ログ) を選択します。
  3. [Log Groups] (ロググループ) リストで、デバッグする API のロググループを選択します。
    REST API については、ロググループの名前が API-Gateway-Execution-Logs_apiId/stageName 形式になります。
    WebSocket API については、ロググループの名前が /aws/apigateway/apiId/stageName 形式になります。
  4. [Log Streams] (ログストリーム) リストで最新の [Last Event Time] (最終イベント時間) があるログストリームを選択し、行ったリクエストの実行と、それに関連する情報を確認します。

詳細については、「API Gateway ログイベントを CloudWatch コンソールで表示する」を参照してください。