問題のトラブルシューティング

このページでは、Eventarc の使用時に発生する可能性のある問題を解決する方法について説明します。

発生の可能性がある宛先固有の問題については、以下のトラブルシューティングをご覧ください。

Eventarc プロバイダ

このセクションでは、イベントの発生元(プロバイダ)で発生している問題のトラブルシューティングのヒントを紹介します。

プロバイダが存在しない

プロバイダが存在することと、トリガー フィルタが適切に指定されていることを確認します。

イベントはプロバイダから生成されているが、ターゲットで受信されていない

ターゲットの宛先でサポートされているリージョンのプロバイダからのイベントがフィルタされているかどうか確認してください。詳細については、Eventarc でサポートされているロケーションEventarc のロケーションについてをご覧ください。

トリガーがイベントを配信していない

  1. プロバイダがイベントを生成していることを確認します。Cloud Audit Logs で、モニタリング対象サービスがログを作成していることを確認します。ログが記録されていてもイベントが配信されない場合は、サポートにお問い合わせください。

  2. 同じトリガー名の Pub/Sub トピックが存在することを確認します。

    1. すべてのロケーションのトリガーを一覧取得するには、次のコマンドを実行します。

      gcloud eventarc triggers list --location=-
      
    2. Pub/Sub トピックを一覧取得するには、次のコマンドを実行します。

      gcloud pubsub topics list
      

      Pub/Sub トピック名に、作成されたトリガーの名前が含まれていることを確認します。Pub/Sub トピックがない場合は、トリガーの作成時にトピックを作成します。

    3. トリガーの説明を取得して、トリガーの条件に関する問題を検出するには、次のコマンドを実行します。

      gcloud eventarc triggers describe TRIGGER \
        --location=LOCATION
      

      次のように置き換えます。

      • TRIGGER: トリガーの ID または完全修飾識別子。
      • LOCATION: Eventarc トリガーのロケーション。
    4. 前のコマンドは、トリガーの条件を返します。Pub/Sub トピックに問題がある場合は、次のいずれかの条件が返されます。

      conditions:
      transport.pubsub.topic:
        code: NOT_FOUND
        message: Pub/Sub topic not found. Try recreating the trigger.

      または

      conditions:
      transport.pubsub.topic:
        code: UNKNOWN
        message: Pub/Sub topic status is unknown. Try requesting the trigger description again.

      該当する場合は、以下の操作を行います。

      • Pub/Sub topic not found が返された場合は、特定のプロバイダ、イベントタイプ、[宛先](/eventarc/docs/targets#triggers)のトリガーを再作成して、トピックを作成します。

      • Pub/Sub topic status is unknown が返された場合は、トリガーの説明を取得するコマンドをもう一度実行してください。

      • 問題が解決されない場合は、サポートまでご連絡ください。詳しくは、トリガーの管理をご覧ください。

  3. Pub/Sub トピックの正常性を確認します。

    1. Pub/Sub トピックの構成を確認します。[トピック] ページに移動します。

      [トピック] に移動

    2. 指標 topic/send_message_operation_count を含むトピックにメッセージが公開されているかどうかをモニタリングします。トピックにメッセージが公開されていない場合は、Cloud Audit Logs で、モニタリング対象サービスがログを出力していることを確認します。ログが記録されていてもイベントが配信されない場合は、サポートにお問い合わせください。

    3. response_code で、指標 subscription/push_request_count を含むメッセージが正常に push されているかどうかをモニタリングします。push エラーが報告された場合は、サービスログを確認します。受信エンドポイントが OK 以外のステータス コードを返した場合、Cloud Run コードが期待どおりに機能していません。この場合、サポートにお問い合わせいただく必要があります。

Eventarc トリガー

このセクションでは、トリガーで発生した問題のトラブルシューティングのヒントを紹介します。

権限拒否エラー

  • Failed to load service details: permission denied エラーが発生した場合は、トリガーの権限が正しく構成され、Pub/Sub サービス アカウントに iam.serviceAccountTokenCreator ロールが付与されていることを確認してください。詳細については、アクセス制御をご覧ください。

  • トリガーの作成中に次のエラーが発生した場合は、数分(最大 7 分)待ってからトリガーを再度作成してください。

    Permission denied while using the Eventarc Service Agent. If you recently
    started to use Eventarc, it may take a few minutes before all necessary
    permissions are propagated to the Service Agent. Otherwise, verify that it has
    Eventarc Service Agent role.
    

    サービス エージェントは、特定のプロジェクトの Google Cloud サービスの ID として機能します。詳細については、サービス エージェントで、Eventarc サービス エージェントのロール(roles/eventarc.serviceAgent)の権限をご覧ください。

    Eventarc サービス エージェントが Google Cloud プロジェクトに存在し、必要なロールが付与されていることを確認するには、次の操作を行います。

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動

    2. [権限] タブで、[Google 提供のロール付与を含める] チェックボックスをオンにします。

    3. プリンシパルのリストで、次の形式の Eventarc サービス エージェントを見つけます。

      service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

    4. サービス エージェントに Eventarc サービス エージェントのロールが付与されていることを確認します。サービス エージェントにない場合は、ロールを付与します。

  • プロジェクト間のサービス アカウントを使用しようとしたときに iam.serviceAccounts.getAccessToken または iam.serviceAccounts.actAs の権限拒否エラーが発生する場合、または ...cross-project service accounts are disabled または Failed to impersonate... に似たエラー メッセージが表示される場合は権限が正しく構成されていることを確認してください。詳細については、プロジェクト間のサービス アカウントを使用するをご覧ください。

Eventarc の使用時に予期しない請求が発生する

トリガーを作成するときは、構成したフィルタがトリガーを無期限に設定できない可能性があるかどうかを確認します。想定外の請求を回避するには、Google Cloud の課金コンソールを使用して予算とアラートを設定します。詳細については、予算の作成をご覧ください。