web-dev-qa-db-ja.com

認証付きのCloud SchedulerからCloud Functionを呼び出す方法

私はどこを見ても、pubsub、app engine http、またはhttpを認証なしで使用しているようです。 google関数にアクセスするためのOIDトークン付きの認証を介して関数にアクセスするための作業を示している人はそれほど多くありません。

チェックアウトしました: GCP SchedulerからGoogle Cloud Functionを呼び出すことができません ですが、何も機能していないようです。

私が従ったドキュメント: https://cloud.google.com/scheduler/docs/http-target-auth#using-gcloud_1

  1. 新しいサービスアカウントを作成しました
  2. 役割を設定します(Cloud Schedulerサービスエージェント/ Cloud Functionsサービスエージェント/ Cloud Scheduler管理者/ Cloud Functions呼び出し元...所有者を試しました!)
  3. パブリック(認証されていない)アクセスを許可しないデプロイされたgoogle関数(単純なhelloworld関数)
  4. クラウドスケジューラでcronジョブをセットアップし、次の構成で、新しくデプロイされた関数に対して毎分実行します。
    • url = helloworld関数
    • oIDCトークン
    • 新しく作成されたサービスアカウント
    • オーディエンスがhello world関数のURLに設定されました

クラウドスケジューラログの結果:

Expand all | Collapse all{
 httpRequest: {
 }
 insertId: "ibboa4fg7l1s9"  
 jsonPayload: {
  @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
  jobName: "projects/project/locations/region/jobs/tester"   
  status: "PERMISSION_DENIED"   
  targetType: "HTTP"   
  url: "https://region-project.cloudfunctions.net/tester"   
 }
 logName: "projects/project/logs/cloudscheduler.googleapis.com%2Fexecutions"  
 receiveTimestamp: "2020-04-15T17:50:14.287689800Z"  
 resource: {…}  
 severity: "ERROR"  
 timestamp: "2020-04-15T17:50:14.287689800Z" 

私はこれを機能させるために誰かが新しいプロジェクトを作成することを示す1つの解決策を見ました、他に何かありますか?

提供されたヘルプに感謝します。

[〜#〜]更新[〜#〜]

新しいGoogle関数-中央で実行(私のApp Engineアプリと同じ)

新しいサービスアカウント-所有者の役割付き

新しいスケジュールされたタスク-情報

新しいスケジュールされたタスク-ステータス

新しいスケジュールされたタスク-ログ

実際の修正

Cloudschedulerサービスアカウントがない場合(例:service-1231231231412@gcp-sa-cloudscheduler.iam.gserviceaccount.com)HTTP認証タスクは機能しません。修正するには、apiとrenableを無効にする必要があり、サービスアカウントを取得しました。このサービスアカウントは使用しませんでしたが、これを機能させるために変更した唯一の変更要因でした。

1.パブリックアクセスを許可しないclod関数を(私のApp Engineアプリケーションと同じリージョンに)作成しました

2.所有者の役割を持つサービスアカウントを作成しました

3.私はクラウドスケジューラジョブを作成しました:

url = https://europe-west2-my-project.cloudfunctions.net/my-function

oIDCトークン

新しく作成されたサービスアカウント

オーディエンス= https://europe-west2-my-project.cloudfunctions.net/my-function

enter image description here

すべてが期待どおりに機能しました。それが動作するはずなので、セットアップを再確認してください。

0
marian.vladoi