ペイロードのラップ解除のトラブルシューティング

このページでは、ペイロードのラップ解除の問題を解決する方法について説明します。

HTTP ステータス コードのエラー

ペイロードのラップ解除を使用すると、一般的な HTTP ステータス コードのエラーが発生する場合があります。エラーは push_request_count 指標でモニタリングできます。

400 bad request

構成ミスやデータ不足のため Pub/Sub がリクエストを処理できない場合に、次のエラーが発生します。

400 Bad Request

この問題は、いくつかの原因で発生します。このエラーの最も一般的な原因は次のとおりです。

  • ペイロード(メッセージ データ)が、HTTP エンドポイントで指定された、想定されるリクエスト形式と一致しません。
  • リクエストの処理に必要なヘッダーがない。
  • サブスクリプションに正しくない HTTP エンドポイントが構成されている。

この問題を解決するには、次のことを試してください。

  • ペイロード(メッセージデータ)の形式を確認します。HTTP エンドポイントで指定された想定されるリクエスト形式と一致することを確認します。
  • リクエストに必要なヘッダーが含まれていることを確認します。ヘッダーがない場合は、メッセージ属性への追加が必要になることがあります。例には Content-Type を含まれる場合がありますが、その他が必要となる場合もあります。
  • サブスクリプション用に構成された HTTP エンドポイントが有効であることを確認します。
  • プッシュ サブスクリプションでデッドレター キュー(DLQ)を有効にします。これにより、配信できない個々のメッセージがリダイレクトされます。検査する必要がある 400 エラーが少数いる場合は、DLQ を有効にすると有用です。

401 unauthorized / 403 forbidden

認証情報が正しくないか無効であるために Pub/Sub がリクエストを処理できない場合に、次のエラーが発生します。

401 unauthorized / 403 forbidden

このエラーは、プッシュ サブスクリプションが認証されていないために発生します。

この問題を解決するには、次のことを試してください。

  • push 認証を有効にします。Cloud Run または App Engine と統合する場合は、プッシュ認証を使用することが重要です。

    ソリューションで push 認証が機能しない場合は、publish message 属性に独自の認証キーまたは API キーを追加する必要があります。

415 Unsupported Media Type(サポートされていないメディアタイプ)

ペイロードの形式がサポートされていない形式であるために Pub/Sub がリクエストを処理できない場合、次のエラーが発生します。

415 Unsupported Media Type

この問題は、いくつかの原因で発生します。このエラーの最も一般的な原因は次のとおりです。

  • エンドポイントに、必要なメディアタイプのヘッダーがありません。

この問題を解決するには、次のことを試してください。

  • エンドポイントには Content-Type ヘッダーが必要になる場合があります。デフォルトでは、ペイロードのラップ解除によってメディアタイプ ヘッダーが設定されることはありません。Content-Type ヘッダーは、publish message 属性としてアタッチすることで設定できます。

431 request header fields too large / 413 content too large

次のエラーは、リクエストで送信されたコンテンツが大きすぎるため、Pub/Sub がリクエストを処理できない場合に発生します。

431 request header fields too Large / 413 content too large

このエラーは、Pub/Sub メッセージの属性サーバーのヘッダーの上限サイズを超えた場合に発生します。

これらの問題を解決するには、次のソリューションを試してください。

  • [メタデータを書き込む] をオフにします。
  • push サブスクリプションでデッドレター キュー(DLQ)を有効にします。これにより、配信できない個々のメッセージがリダイレクトされます。その後、サブスクリプションは引き続き機能しますが、エラーのあるメッセージは別のトピックにリダイレクトされ、さらに分析されます。

ペイロードのアンラッピングが有効かどうかを確認する

  1. Google Cloud コンソールで、[サブスクリプション] ページに移動します。

    Pub/Sub サブスクリプションを開く

  2. サービスの名前をクリックします。

    サービスの詳細ページが開きます。

  3. 構成テーブルで、メッセージ データのラップ解除メッセージ メタデータの書き込みの値を確認します。

    ペイロードのラップのステータス(有効または無効)が、対応するテーブル行に表示されます。

次のステップ

  • ペイロードのアンラッピングで問題が解決しない場合は、サポートの利用をご覧ください。