19646

2024-09-02 Incoming

Eventarc にて、イベントタイプを google.cloud.datastore.entity.v1.create としたとき、 event-filters-path-pattern を指定するとイベントが生成されず(対象となる Cloud Run に HTTPリクエストが届かず)困っております。

  • event-filters-path-pattern を指定しなければ、どのKindに新しいエンティティを作っても HTTP リクエストが届きます。

  • event-filters-path-pattern="entity=XXX/*" で、本来エンティティの新規作成を監視したいKind(ここではXXX)に絞ると、XXX に新しいエンティティを作ってもリクエストが届きません。

  • Cloud Datastore から Datastore モードの Firestore に変換されたDBなので、Kind名を __bytesWfhy__/* とbase64エンコードしてもリクエストは届きませんでした。

  • ワイルドカード指定を {id}{id=*} など名前つきキャプチャ書式に変えてみてもリクエストは届きませんでした。

  • Cloud Run ではなく Cloud Run Functions (第二世代) で試行しても、同様で、 trigger-event-filters-path-pattern を指定しなければ、どの Kind に新しいエンティティを作っても関数が呼び出されますが、trigger-event-filters-path-pattern を指定すると、関数は呼び出されませんでした。

Datastore モードのFirestore トリガにてパスパターンでフィルタリングを行う方法に関する経験・知見お持ちでしたらお教えいただけると幸いです。

2024-09-03 Sent

株式会社ゼネテック 松本 様

お世話になっております、株式会社G-genサポートの高井です。 お問い合わせいただきありがとうございます。ご案内にお時間いただいており恐れ入ります。

本件につきまして、現在弊社にて内容を確認しております。 お待たせしており恐れ入りますが、ご案内まで少々お時間いただけますと幸いです。

引き続きよろしくお願いいたします。

2024-09-06 Sent

株式会社ゼネテック 松本 様

お世話になっております、株式会社G-genサポートの高井です。 お待たせしており恐縮でございますが、一部ご案内できる情報が得られましたので下記に案内いたします。

本件につきまして、フィルターを適用するとトリガーされない事象が再現できております。 つきましては、現在 Eventarc にて、どのイベントタイプが適用可能であるか引き続き調査・検証しておりますので、恐れ入りますが進捗確認次第ご連絡させていただきます。

引き続きよろしくお願いいたします。

2024-09-09 Sent

株式会社ゼネテック 松本 様

お世話になっております、株式会社G-genサポートの高井です。 ご案内にお時間いただいており恐れ入ります。ご質問いただいた内容について下記にご案内いたします。

Eventarc にて、イベントタイプを google.cloud.datastore.entity.v1.create としたとき、 event-filters-path-pattern を指定するとイベントが生成されず(対象となる Cloud Run に HTTPリクエストが届かず)困っております。

こちらはコンソール上にて作成されたイベントでしょうか。もしくは gcloud CLI を用いて作成されましたでしょうか。

コンソールにて作成された場合、イベント フィルタの演算子指定がデフォルトの「等しい」ではなく「パスパターン」[1]となっている必要がございます。 gcloud CLI にて作成された場合、オプション引数 --event-filters="namespace=" は指定されていますでしょうか。指定している場合、全ての名前空間でなくなるため、マッチしないことが想定されます。

当サポートにて同様にイベントを作成し検証いたしましたが、同様の事象は再現できかねる状況でございます。 つきましては、お客様環境の設定情報(CLI コマンド gcloud eventarc triggers describe の結果、または当該コンソール画面のスクリーンショット)もいただけますと、当サポートにて詳細に確認も可能となっておりますのでご検討くださいませ。

[1] トリガーを作成する Cloud Firestore イベントを Cloud Run に転送する (Eventarc 公式ドキュメント) https://cloud.google.com/eventarc/docs/run/route-trigger-cloud-firestore?hl=ja#create-trigger

認識の相違ある場合や不明点などありましたらお知らせくださいませ。 引き続きどうぞよろしくお願いいたします。

2024-09-10 Incoming

高井様

お世話になっております、ゼネテック松本です。 ご返信ありがとうございます。 トリガの生成には、gcloud コマンドを以下のように使用しています。 (誤解防止のため、伏せ字・置換え等用いず、全ての情報を実績値のまま記載します)

gcloud eventarc triggers create updater \
 --location=asia-northeast1 \
 --destination-run-service=updater \
 --destination-run-region=asia-northeast1 \
 --event-filters="type=google.cloud.datastore.entity.v1.created" --event-filters="database=(default)" --event-filters="namespace=(default)" --event-filters-path-pattern="entity='__bytesTG9jYXRpb25IaXN0b3J5__/*'" --event-data-content-type="application/protobuf" \
 --service-account gae-go-devm-297203@appspot.gserviceaccount.com

固有名称の補足です。 トリガ名:updater 接続先の Cloud Run サービス名称: updater 監視したいKind名: LocationHistory (ここでは、base64エンコードして「__bytesTG9jYXRpb25IaXN0b3J5__」としていますが、LocationHistory のママにしても、現象は変わりません。 また、ワイルドカード指定「/*」を「/{id}」および「/{id=*}」のように名前つきキャプチャに変更しても現象は変わりません。

--event-filters-path-pattern="entity='__bytesTG9jYXRpb25IaXN0b3J5__/*’"」を取り除くと、LocationHistory に新しいエンティティを作成したとき、および他のKindでも新しいエンティティを作成すると、Cloud Run の updater サービスにHTTPリクエストが届きます。

取り急ぎ以上です。 引続き、何卒よろしくお願いいたします。

2024-09-12 Sent

株式会社ゼネテック 松本 様

お世話になっております、株式会社G-genサポートの高井です。 ご案内にお時間いただいており恐れ入ります。追加でご質問いただいた内容について下記にご案内いたします。

実際に実行された gcloud CLI コマンドのご共有ありがとうございます。

--event-filters-path-pattern オプションの値を ' で囲む必要がございませんので、以下コマンドにて更新いただければ動作する可能性が高いと存じます。

gcloud eventarc triggers update updater \
  --location=asia-northeast1 \
  --destination-run-service=updater \
  --destination-run-region=asia-northeast1 \
  --event-filters="type=google.cloud.datastore.entity.v1.created" \
  --event-filters="database=(default)"
  --event-filters="namespace=(default)"
  --event-filters-path-pattern="entity=LocationHistory"
  --event-data-content-type="application/protobuf" \
  --service-account gae-go-devm-297203@appspot.gserviceaccount.com

認識の相違ある場合や不明点などありましたらお知らせくださいませ。 引き続きどうぞよろしくお願いいたします。

2024-09-13 Incoming

高井様

お世話になっております、ゼネテック松本です。 ご返信ありがとうございました。

クォーテーションを外して試してみましたが、現象は変わりませんでした.. デプロイコマンドと、その結果のコンソール表示をまとめましたので添付いたします。

取り急ぎ以上です。 引続き、何卒よろしくお願いいたします。

2024-09-17 Sent

株式会社ゼネテック 松本 様

お世話になっております、株式会社 G-gen サポートの高井です。 ご確認・詳細状況 PDF のご共有ありがとうございます。

現在、当サポートにて同様の事象が再現可能か検証しております。 お待たせしており恐れ入りますが、ご案内まで少々お時間いただけますと幸いです。

ご不便おかけし恐れ入りますが、よろしくお願いいたします。

2024-09-19 Sent

株式会社ゼネテック 松本 様

お世話になっております、株式会社 G-gen サポートの高井です。

お待たせしており、また本件について検証に時間を要しており申し訳ございません。 度々の情報提供依頼となり恐れ入りますが、追加で以下2点についてご確認いただけますでしょうか。

  • Eventarc には App Engine のサービスアカウントが指定されているが、宛先の Cloud Run も同じサービス アカウントを使用されているか

  • 上記サービス アカウントに「Eventarc イベント受信者 (roles/eventarc.eventReceiver)」のロールが付与されているか

    • されている場合、付与されているロールの一覧もご提供いただけますと幸いです

お手数おかけしており恐縮ですが、よろしくお願いいたします。

2024-09-19 Incoming

高井様

お世話になっております、ゼネテック松本です。 ご連絡ありがとうございます。

EventArcイベント受信者のロールの件、確認したコンソールのスクリーンショットをPDFに貼りましたので添付いたします。event-filters-path-pattern を指定しなければイベント受信ができていたのでケアしていませんでしたが、確認したところ: 1 Cloud Run は Compute Engine default Service Account で動作 2 デフォルトの Compute Engine default Service Account にはEventArcイベント受信者のロールなし 3 EventArcには App Engine default Service Account を付与 4 App Engine default Service Account にはEventArcイベント受信者のロールあり ※ App Engine default Service Account に EventArcイベント受信者のロールがあるのは、当初、この機能を Cloud Run Functions で実験しており、当該 Cloud Run Functions をApp Engine default Service Accountで動作させていたため、これにEventArcイベント受信者のロールを付与したものです。(Cloud Run Functionsでも現時点の Cloud Run 同様、trigger-event-filters-path-pattern を指定しなければ関数が呼び出され、指定すると関数が呼び出されませんでした。

取り急ぎ以上です。他にもご不明な点ございましたらお気軽にお問い合わせください。 引続き、何卒よろしくお願いいたします。

2024-09-20 Sent

株式会社ゼネテック 松本 様

お世話になっております、株式会社 G-gen サポートの高井です。 再度、詳細状況 PDF ご共有いただきありがとうございます。

追加でいただいた情報・また Google からの回答を踏まえまして、下記に確認・修正いただきたい項目を3点記載いたします。

  1. Datastore のデータ構造

    • Datastore データベースの該当する種別(Kind)における、各プロパティのデータ型をご共有いただけますでしょうか。

    • エンティティ毎に異なるデータ型を保持している場合、パス パターンの指定するリソース名が特定できない場合がございます。

  2. サービスアカウントと IAM ロール

    • Eventarc トリガーでもロール「Eventarc イベント受信者」を付与した Compute Engine デフォルトのサービスアカウントを使用するよう修正いただけますでしょうか。

    • Eventarc トリガーには App Engine デフォルトのサービスアカウントを使用しているが、宛先となる Cloud Run サービスでは Compute Engine デフォルトのものが使用されている状態だと、権限の不一致が内部で発生している可能性がございます。

  3. Datastore へのデータ追加方法

    • Google Cloud クライアント ライブラリを使用して Datastore データベースにエンティティを追加している場合、レスポンスのステータスコードが正常であるかを確認いただけますでしょうか。

    • または gcloud CLI や他の Google Cloud のリソースからのデータ投入でしょうか。こちらの場合もステータスが正常であるか確認いただけますと幸いです。

    • 当サポートではコンソールにてデータを投入し検証を実施しておりましたが、再現できかねる状況でございます。お客様が実際にデータを追加している手順を確認させていただきたく存じます。

度々お手数おかけしており恐縮でございますが、ご確認よろしくお願いいたします。