プライベート ネットワーク セキュリティを使用して Google Cloud Scheduler から Google Cloud Functions をトリガーする

プライベート ネットワーク セキュリティを使用して Google Cloud Scheduler から Google Cloud Functions をトリガーする

Google Cloud Scheduler を使用すると、Google Cloud Function に関連付けられた http エンドポイントにアクセスして、タイマー/スケジューラから関数を実行できます。Cloud Functions には、公開に関して 2 つのオプションがあります: (1) すべてのトラフィックを許可する、または (2) 内部トラフィックのみを許可する (同じプロジェクトまたは VPC SC 境界内からのトラフィックのみ許可)。後者を実行したいのですが、スケジューラは HTTP 403 でアクセスできません。

すべてのトラフィックに公開すると、誰かが私の URL を推測して、好きなだけトリガーできるようになります。もちろん、関数に認証を入れて Scheduler に適切なヘッダーを渡すこともできますが、私の関数は他の誰かがトリガーしても危険ではありません。ただし、他の誰かがトリガーできる場合は、好きなだけ呼び出すことができ、認証があっても、すべての呼び出しに対して料金が発生します。Scheduler 以外の誰も (理想的には) URL にアクセスできないようにして、私のスケジュール以外ではトリガーされないようにしたいのですが。これを可能にする方法はありますか?

答え1

公式ドキュメントによると:

Cloud Scheduler を使用するには、サポートされているリージョンのいずれかにある App Engine アプリが Cloud プロジェクトに含まれている必要があります。プロジェクトに App Engine アプリがない場合は、作成する必要があります。

Cloud Scheduler の概要

したがって、次のコマンドを実行して、App Engine アプリケーションの場所を見つけます。

gcloud app describe
#check for the locationId: europe-west2

次に、Ingress 設定で「内部トラフィックのみを許可する」に設定されたクラウド関数を、App Engine アプリケーションと同じ場所にデプロイします。

アプリ エンジン アプリケーションと同じリージョンにクラウド関数をデプロイしましたが、すべてが期待どおりに動作しました。

関連情報