Saya mencoba memanggil fungsi cloud yang mematikan Instance VM dengan:

gcloud functions call stopInstancePubSub --data '{"data":"<instance data in base64>"}' 

Ini berfungsi dengan baik ketika saya menjalankannya dari mesin lokal saya atau dari konsol gcloud. Tetapi saya harus dapat menjalankannya dari dalam instance itu sendiri dan ketika saya mencoba melakukannya, ini adalah kesalahan yang terjadi:

ERROR: (gcloud.functions.call) ResponseError: status=[403], code=[Forbidden], message=[Request had insufficient authentication scopes.]

Pada dasarnya saya ingin dapat menjadwalkan skrip untuk dijalankan setiap hari (ini akan berjalan sekitar 2-3 jam). Jadi saya telah menggunakan cloud scheduler untuk memanggil fungsi cloud yang memulai skrip pada jam 12 pagi setiap hari, dan itu berfungsi, tetapi saya harus dapat mematikan instance (untuk menghindari biaya yang tidak perlu ditambahkan) setelah skrip selesai berjalan . Jadi, saya harus dapat memanggil fungsi dari dalam instance itu sendiri.

Setiap saran lain untuk mencapai tujuan saya akan sangat dihargai.

0
Prayush Dawda 11 Desember 2019, 22:21

1 menjawab

Jawaban Terbaik

Saya yakin Anda harus Mengizinkan akses penuh ke semua Cloud API pada instance yang berjalan sebagai akun layanan tautan.

Kemudian tetapkan peran yang diperlukan ke akun layanan untuk memanggil fungsi cloud (roles/cloudfunctions.invoker).

Untuk mengubah cakupan, di bagian cakupan Access, atur cakupan yang sesuai dengan kebutuhan Anda. Sebagai praktik terbaik, tentukan hanya cakupan akses yang diperlukan instance VM Anda. Jika Anda tidak yakin dengan cakupan akses yang tepat untuk disetel, pilih Izinkan akses penuh ke semua Cloud API, lalu pastikan untuk membatasi akses dengan menyetel peran IAM.

2
marian.vladoi 11 Desember 2019, 21:48