API ゲートウェイ WebSocket API 接続エラーのトラブルシューティング方法を教えてください。
最終更新日: 2022 年 11 月 17 日
Amazon API Gateway WebSocket API に接続しようとしましたが、エラーが表示されました。WebSocket API 接続をトラブルシューティングする方法を教えてください。
簡単な説明
API ゲートウェイ WebSocket API 接続エラーは、以下の原因で発生する可能性があります。
- バックエンドにリクエストを行うための権限が不十分
- API ID、AWS リージョン、API ステージのフィールドが正しくない
- バックエンド統合のエラー
- AWS Identity and Access Management (IAM) 認証エラー
解決方法
お客様のユースケースに合わせて、次のトラブルシューティングのステップを実行してください。
WebSocket API にバックエンドへのリクエストを行うために必要な権限があることを確認する
API ゲートウェイは IAM ロール、ポリシー、タグ、および AWS Lambda オーソライザーを使用して WebSocket API へのアクセスを制御します。詳細については、「API Gateway での WebSocket API へのアクセスの制御と管理</t1>」を参照してください。
また、 WebSocket API 統合リクエストが正しく設定されていることを確認してください。
リクエストが正しい API ID、AWS リージョン、API ステージに送信されていることを確認します。
このリクエスト URL の例では、以下のフィールドが正しいことを確認してください。
wss://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/production
- WebSocket API ID は「a1b2c3d4e5」です。
- AWS リージョンは「us-east-1」です。
- API ステージ名の「プロダクション」が存在する。
CloudWatch ログにエラーがないか確認する
API ゲートウェイ WebSocket API のトラブルシューティングを行うには、指示に従って Amazon CloudWatch Logs を有効にします。Lambda 関数がバックエンドに統合されている場合は、CloudWatch ログにエラーがないか確認してください。詳細については、「AWS Lambda の CloudWatch Logs へのアクセス」を参照してください。
API メソッドで IAM 認証がオンになっている場合は、API リクエストが署名されていることを確認する
IAM 認証がオンになっている場合は、API リクエストがSignature Version 4 (SigV4) で署名されていることを確認してください。詳細については、「署名バージョン 4 を使用した AWS リクエストへの署名」を参照してください。
API ゲートウェイ API の IAM 認証を有効にするには、次の手順に従います。
- API Gateway コンソールで、自身の API の名前を選択します。
- [Resources] (リソース) ペインで、IAM 認証を有効にするメソッド (GET または POST など) を選択します。
- [Method Execution] (メソッドの実行) ペインで、[Method Request] (メソッドリクエスト) を選択します。
- [Settings] の [Authorization] で、鉛筆アイコン ([Edit]) を選択します。ドロップダウンリストから [AWS_IAM] を選択し、チェックマークアイコン ([Update]) を選択します。
- (オプション) IAM 認証を有効にする API メソッドごとに、ステップ 2~4 を繰り返します。
- WebSocket API をデプロイして、変更を有効にします。