API Gateway REST API または WebSocket API のトラブルシューティング用に、CloudWatch Logs を有効にする方法を教えてください。

所要時間2分
0

作成している Amazon API Gateway の REST API または WebSocket API で発生するエラーをデバッグしたいです。

簡単な説明

API Gateway REST API または WebSocket API のトラブルシューティングには、Amazon CloudWatch Logs を使用します。ログ形式の種類については、「API Gateway 用 CloudWatch ログの形式」を参照してください。

注: HTTP API は、アクセスログ記録のみをサポートします。詳細については、「API Gateway で HTTP API のログ記録を設定する」を参照してください。

ログには次の情報が表示されます。

解決策

CloudWatch にログを送信する IAM ロールを作成する

次の手順を実行します。

  1. AWS Identity and Access Management (IAM) コンソールを開きます。
  2. ナビゲーションペインで [ロール] を選択します。
  3. [ロール] ペインで [ロールの作成] を選択します。
  4. [ロールの作成] ページで、次の情報を入力します。
    信頼されたエンティティとして、AWS サービスを選択します。
    [ユースケース][API Gateway] を選択し、ラジオボタンで [API Gateway] を選択します。
    [次へ] を選択します。
  5. [アクセス許可ポリシー] で、必要なすべてのアクセス許可を持つ、デフォルトの AWS マネージドポリシーである AmazonAPIGatewayPushToCloudWatchLogs を使用します。
  6. [次へ] を選択します。
  7. 名前、確認、作成で、次の情報を入力します。
    ロール名に、ロールの名前を入力します。
    (オプション)ロールの説明の説明を希望に応じて編集します。
    (オプション) タグを追加します。
    [ロールの作成] を選択します。
  8. [ロール] ペインで、作成したロールを選択します。
  9. [概要] ペインで、次のセクションで使用するためにロールの ARN を書き留めます。

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

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

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. [API] ペインで、HTTP API ではない、REST API または WebSocket API の名前を選択します。
  3. ナビゲーションペインで [設定] を選択します。
  4. [設定] で、[CloudWatch ログロールの ARN] に IAM ロールの ARNを入力します。
    注: CloudWatch Logs ロールは、リージョン内のすべての API で使用する AWS リージョンレベルの設定です。
  5. [保存] を選択します。

注: 複数リージョンにわたり複数の API を作成する場合は、各リージョンで上記の手順を実行します。

API ログ記録を有効にして API をステージングする

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. ナビゲーションペインで [API] を選択し、該当する API を選択します。
  3. ナビゲーションペインで [ステージ] を選択し、該当するステージを選択します。
  4. [ログとトレース][編集] を選択します。
  5. [CloudWatch ログ] で、ドロップダウンメニューからレベルを選択します。
    注: リクエストログと応答ログをすべて表示するには、[データトレース] オプションを選択し、ログレベルを [エラーと情報ログ] に設定します。データトレースにより、機密データがログに記録される可能性があるため、本番用 API ではデータトレースを有効にしないことがベストプラクティスです。
  6. [詳細なメトリクス] を選択します。
  7. [カスタムアクセスログ記録] で次の手順を実行します。
    [アクセスログ記録の有効化] を選択します。
    [アクセスログの宛先 ARN]Amazon Data Firehose または CloudWatch ロググループの ARN を入力します。
    注: REST API のみが Firehose ARN をサポートしています。
  8. ログの形式を入力します。
  9. [変更を保存] を選択します。

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

注: API に新しいリクエストを送信するには、クライアントアプリケーションまたは、Postman アプリや WebSocket API 用の wscat などのツールを使用します。

次の手順を実行します。

  1. CloudWatch コンソールを開きます。
  2. ナビゲーションペインの [ログ] で、[ロググループ] を選択します。
  3. [ロググループ] で、デバッグする API のロググループを選択します。
    REST API では、ロググループ名の形式は API-Gateway-Execution-Logs_apiId/stageName となります。
    WebSocket API では、ロググループ名の形式は /aws/apigateway/apiId/stageName となります。
    注: アクセスログは、アクセスログを有効にしたときに指定したロググループに配置されます。
  4. [ログストリーム] リストで、[最終イベント時刻] が最新であるログストリームを選択すると、リクエストの詳細を含むメッセージが表示されます。

関連情報

API Gateway マッピングテンプレートとアクセスログ記録用変数のリファレンス

Amazon CloudWatch を使用して REST API の実行を監視する

CloudWatch メトリクスを使用して WebSocket API の実行を監視する