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

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

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

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

400 bad request

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

400 Bad Request

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

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

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

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

401 unauthorized / 403 forbidden

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

401 unauthorized / 403 forbidden

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

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

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

    ソリューションで 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. 構成テーブルで、メッセージ データのラップ解除メッセージ メタデータの書き込みの値を確認します。

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

次のステップ

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