私はどこを見ても、pubsub、app engine http、またはhttpを認証なしで使用しているようです。 google関数にアクセスするためのOIDトークン付きの認証を介して関数にアクセスするための作業を示している人はそれほど多くありません。
チェックアウトしました: GCP SchedulerからGoogle Cloud Functionを呼び出すことができません ですが、何も機能していないようです。
私が従ったドキュメント: https://cloud.google.com/scheduler/docs/http-target-auth#using-gcloud_1
クラウドスケジューラログの結果:
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
すべてが期待どおりに機能しました。それが動作するはずなので、セットアップを再確認してください。