レック・テクノロジー・コンサルティング株式会社TECH BLOG

これで解決!Cloud Pub/Sub サブスクリプションが作成できない

皆さん、こんにちは。入社5年目のクラウド技術統括部のR.Aです。

VPC Service Controls のサービス境界があるプロジェクトでCloud Run 関数を 実行する Cloud Pub/Sub サブスクリプションを作成するときに問題が起こったので共有します。

はじめに

以下が目次です。

目次

環境

VPC Service Controlsに保護されているプロジェクト※で、以下のリソースを作成します。
※プロジェクトで使用するサービスすべて制限付きサービスに含めている状態です。ここで取り上げていないサービスもあります。
pubsub1.png

処理はざっくりこんな感じです。
Cloud Logging から特定の文字列が出力された場合に Cloud Pub/Sub トピックにメッセージを送信する。
Cloud Pub/Sub サブスクリプションからCloud Run 関数がメッセージを受信する。
Cloud Run 関数が BigQuery に SQL を実行する。

事象

Push エンドポイントの Cloud Pub/Sub サブスクリプションが作成できないです。
[保存]を押下すると「アクセスが拒否されました」と出力されます。
pubsub2.png
pubsub3.png

原因

VPC Service Controls の制限事項 に該当していることが問題でした。
Cloud Run 関数のURLである cloudfunctions.net が自動で割り当てられますが、これがカスタムドメインとして扱われてしまいます。
該当部分を引用します。

push エンドポイントがデフォルトの run.app URL または Workflows の実行で Cloud Run サービスに設定されていない限り、新しい push サブスクリプションを作成できません(カスタム ドメインは機能しません)。Cloud Run とのインテグレーションの詳細については、VPC Service Controls の使用をご覧ください。

pubsub4.png

解決策

Cloud Run 関数を使用しているので、裏で Cloud Run が作成されています。
Cloud Run の URL(run.appで終わるURL)を使用すれば、制限事項に該当しなくなるため、それを使用します。

Cloud Run 関数のページに表示されるURLではなく、、、
pubsub5.png

Cloud Run のページに表示されるURLの隣にある「!」を押下すると右ペインが表示されるので、
pubsub6.png

右ペインに表示されている3つの中で run.app で終わるURLを Cloud Pub/Sub サブスクリプションに設定します。
pubsub7.png

run.app のURLでCloud Pub/Sub サブスクリプションを作成すると、、、
pubsub8.png

無事作成できました!
pubsub9.png

おわりに

初期構築時には VPC Service Controls を一番最後に作成することが多いため、気づきませんでした。。。
構築済みの環境に新しいリソース作成することもあるので、面倒ですが初期構築時からVPC Service Controls
を作成しておくものだなと思いました、、!

話には関係ないですが、Cloud Run 関数じゃなくて、やっぱりCloud Functionsって呼びたい!!

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る