トラブルシューティング

サブスクリプションの問題

サブスクリプションを作成できない

以下の項目をすべてご確認ください。

  • name フィールドにサブスクリプション名を指定している。バージョン v1beta2 以降では、サブスクリプション名を projects/project-identifier/subscriptions/subscription-name の形式で指定する必要があります。
  • topic フィールドに、サブスクライブ先とする既存のトピックの名前を指定している。バージョン v1beta2 以降では、トピック名を projects/project-identifier/topics/topic-name の形式で指定する必要があります。
  • 受信 URL のプロトコルとして、pushEndpoint フィールドに https:// を小文字で指定している(http://HTTPS:// は不可)。

push サブスクライバーがメッセージを受信しない

以下をご確認ください。

  • 問題のあるサブスクリプションに関係するエラーがないかどうか、Cloud Monitoring を調べます。
  • Google App Engine では、App Engine エンドポイントの登録に記載されているように、エンドポイント URL のパスに /_ah/push-handlers/ 接頭辞を使用することを推奨します。この設定により、エンドポイントが Google Cloud Pub/Sub から push メッセージを受信できるようになります。
  • 他の環境で、ログインせずにインターネットからエンドポイント URL にアクセスできるか確認します。cURL などの診断ツールを使用して URL にアクセスすることで、URL が制限されていないことを確認します
  • appspot.com 以外のドメインでは、ドメインを Google Cloud Platform Console に登録してください。詳細については、他のエンドポイントの登録をご覧ください。

その他の問題

メッセージを pull するときの SocketTimeoutException

これは、通常、Java クライアント ライブラリでのデフォルトのタイムアウト(20 秒)によって発生します。pull 呼び出し(req.setReturnImmediately(false))のハングを使用している場合、Cloud Pub/Sub でのタイムアウトを延長する必要があります。そのため、延長したタイムアウトを明示的に設定することを推奨します。タイムアウトの延長については、RetryHttpInitializerWrapper クラスをご覧ください。

403 (Forbidden) エラー

このエラーが発生した場合、以下を行ってください。

  • GCP Console で Google Cloud Pub/Sub API が有効にされていることを確認します。
  • 特に、プロジェクト間のコミュニケーションのために Google Cloud Pub/Sub を使用している場合、リクエストを実行しているプリンシパルが、関係する Google Cloud Pub/Sub リソースに必要な権限を持っていることを確認します。
  • Dataflow を使用している場合、<projectId>@cloudservices.gserviceaccount.com と Compute Engine サービス アカウント <projectId>-compute@developer.gserviceaccount.com の両方が、関係する Google Cloud Pub/Sub リソースに必要な権限を持っていることを確認します。詳細については、Google Cloud Dataflow セキュリティと権限をご覧ください。
  • App Engine を使用している場合、プロジェクトの権限ページで、App Engine サービス アカウントが編集者としてリストされているかどうか確認します。リストされていない場合、App Engine サービス アカウントを編集者として追加します。通常、App Engine サービス アカウントは <project-id>@appspot.gserviceaccount.com の形式です。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Pub/Sub ドキュメント