開発している Amazon API Gateway の REST API または WebSocket API のエラーをデバッグする必要があります。
簡単な説明
API ゲートウェイ REST API または WebSocket API のトラブルシューティングを行うには、Amazon CloudWatch Logs を使用して、実行ログ記録およびアクセスログを有効にします。
注:HTTP API は現在、アクセスログ記録のみをサポートしています。これらの API ではログ記録の設定が異なります。詳細については、HTTO API のログ記録の設定を参照してください。
実行ログには、ほとんどの API エラーの識別とトラブルシューティングに使用できる情報が含まれています。たとえば、ログ記録には次の情報が含まれる場合があります。
アクセスログには、API にアクセスしたユーザーとそのアクセス方法に関する詳細が含まれます。ログは、API エラーのトラブルシューティングにも使用できます。ログ記録の各タイプの詳細については、API Gateway の CloudWatch ログ形式を参照してください。
解決策
CloudWatch へのログ記録用の IAM ロールを作成する
CloudWatch にログ記録を送信する AWS Identity and Access Management (IAM) ロールを作成するには、次の手順を実行します。
- IAM コンソールを開きます。
- ナビゲーションペインで、ロール を選択します。
- ロールペインでロールの作成を選択します。
- ロールの作成ページで、次の情報を入力します。
信頼されたエンティティとして、AWS サービスを選択します。
ユースケースとして、API ゲートウェイを選択します。
API ゲートウェイラジオボタンを選択します。
次へを選択します。
- アクセス許可ポリシーでは、AWS マネージドポリシーである AmazonAPIGatewayPushToCloudWatchLogs がデフォルトで選択されていることに注意してください。ポリシーには、必要なアクセス許可のすべてがあります。
- 次へを選択します。
- 名前、確認、作成で、次の情報を入力します。
ロール名に、ロールの名前を入力します。
(オプション)ロールの説明の説明を希望に応じて編集します。
(オプション) タグを追加します。
ロールの作成を選択します。
- ロールペインの検索バーに、作成したロールの名前を入力します。その後、検索結果からロールを選択します。
- 概要ペインで、ロール ARN をコピーします。この ARN は次のセクションで必要になります。
詳細については、CloudWatch のログ記録の許可を参照してください。
API ゲートウェイコンソールに IAM ロールを追加する
IAM ロールを API Gateway コンソールに追加するには、次の手順を実行します。
- API Gateway コンソールを開きます。
- API ペインで、作成した API の名前を選択します。これは、REST API または WebSocket API のいずれかであり、HTTP API ではありません。
- ナビゲーションペインで、設定 を選択します。
- 設定で、CloudWatch ログのロール ARN に IAM ロール ARN を入力します。
**注:**CloudWatch ログロールは AWS リージョンレベルの設定であり、その AWS リージョンのすべての API で使用されます。
- 保存を選択します。
**注:**異なる AWS リージョンで複数の API を開発している場合は、各 AWS リージョンでこれらのステップを実行してください。
API とステージのログ記録を有効にする
API とステージのグ記録を有効にするには、次の手順を実行します。
- API Gateway コンソールを開きます。
- ナビゲーションペインで API を選択し、次に API を選択します。
- ナビゲーションペインで、ステージを選択します。次に、希望するステージ名を選択します。
- ログとトレースで編集を選択します。
- CloudWatch ログ記録で以下のタスクを実行して実行ログ記録を有効にします。
ドロップダウンリストから、ログレベルを選択します。
エラーのみを選択して、エラーになった API へのリクエストについてのみ実行ログを生成します。
エラーと情報ログ記録を選択すると、すべてのリクエストの実行ログ記録が生成されます。
すべてのリクエストと応答ログ記録を選択して、すべてのイベントの詳細なログ記録を生成します。
注:****すべてのリクエストと応答ログ記録はトラブルシューティングに役立ちますが、機密データをログ記録する可能性があります。プロダクション API にはすべてのリクエストと応答ログ記録を使用しないのがベストプラクティスです。
- カスタムアクセスのログ記録で、以下のタスクを実行してアクセスログを有効にします。
アクセスログ記録の有効化 チェックボックスにチェックを入れます。
アクセスログの宛先 ARN で、Amazon Kinesis Data Firehose または CloudWatch ロググループの ARN を入力します。
**注:**Amazon Kinesis Data Firehose の ARN は REST API でのみサポートされています。
- ログの形式を入力します。
- 変更を保存を選択します。
詳細については、API Gateway の CloudWatch ログの形式を参照してください。
ログ記録の設定をテストする
API への新しいリクエストを送信するには、クライアントアプリケーションまたは他のツール、Postman アプリや wscat (WebSocket API 向け) などを使用します。
ログ設定をテストするには、次の手順を実行します。
- CloudWatch コンソールを開きます。
- ナビゲーションペインのログで、ロググループを選択します。
- ロググループのリストで、デバッグする API のロググループを選択します。
REST API の場合、ロググループの名前は次の形式になります: API-Gateway-Execution-Logs_apiId/stageName。
WebSocket API の場合、ロググループの名前は /aws/apigateway/apiId/stageName の形式になります。
**注:**アクセスログは、アクセスログを有効にしたときに ARN を指定したロググループにあります。
- ログストリームのリストで、最新の**最終イベント時刻のログストリームを選択します。**この選択により、リクエストの実行またはアクセスの詳細を含むメッセージを表示できます。
詳細については、CloudWatch コンソールで API Gateway のログイベントを表示するを参照してください。
関連情報
API Gateway での CloudWatch による REST API のログの設定
API Gateway マッピングテンプレートとアクセスのログ記録の変数リファレンス
Amazon CloudWatch のメトリクスを使用した REST API の実行のモニタリング
CloudWatch メトリクスを使用した WebSocket API の実行のモニタリング