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

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

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 ヘッダーは、パブリッシュ メッセージ属性としてアタッチすることで設定できます。

431 request header fields too large / 413 content too large

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

431 request header fields too Large / 413 content too large

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

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

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

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

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

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

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

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

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

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

次のステップ

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