Apa cara paling sederhana untuk menggunakan gcloud
baris perintah secara non-interaktif dengan Akun Layanan di luar GCE? Lebih disukai tanpa mengotori sistem file dengan file kredensial, yang gcloud auth activate-service-account --key-file=...
tidak.
Ada banyak kasus penggunaan untuk digunakan gcloud
dengan akun layanan. Misalnya, di server, saya ingin menguji apakah pengaturannya GOOGLE_APPLICATION_CREDENTIALS
benar dan memiliki izin yang diperlukan sebelum menjalankan aplikasi saya. Atau, saya ingin menjalankan beberapa skrip pengaturan atau skrip cron yang melakukan beberapa pengecekan dengan gcloud
baris perintah.
Perpustakaan Google Cloud (misalnya python , java ) secara otomatis menggunakan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
untuk mengautentikasi ke Google Cloud. Namun sayangnya, baris perintah ini tampaknya tidak berpengaruh gcloud
. Apa cara bersih untuk digunakan gcloud
sambil membiarkan sistem file tetap utuh?
$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a
different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
sumber
Jawaban:
gcloud
umumnya tidak menggunakanGOOGLE_APPLICATION_CREDENTIALS
variabel lingkungan. Ini hanya memiliki beberapa perintah untuk memfasilitasi pengaturan kredensial default aplikasi ini digcloud auth application-default [login|revoke|print-access-token...]
.Secara default
gcloud
menyimpan konfigurasinya dalam $ {HOME} /. Config / gcloud. Dimungkinkan untuk mengganti lokasi itu dengan mengaturCLOUDSDK_CONFIG
variabel lingkungan.Juga dimungkinkan (meskipun lebih membosankan) untuk mengesampingkan sebagian besar pengaturan sehingga tidak perlu dikonfigurasikan sebelumnya melalui
gcloud config set ...
dan / ataugcloud auth activate-service-account
. Untuk setiap pengaturan, seseorang dapat menentukan variabel lingkungan.Misalnya perintah setara yang Anda coba gunakan file kunci akun layanan adalah:
Perhatikan bahwa ini masih akan men-cache kredensial
CLOUDSDK_CONFIG
karena ia perlu melakukan cache akses-token, sehingga ia tidak harus me-refreshnya pada setiap permintaan.Untuk use case, opsi terbaik menurut saya adalah
CLOUDSDK_CONFIG
ke beberapa direktori tempgcloud auth activate-service-account --key-file=...
gcloud
untuk melakukan pekerjaan Anda ...CLOUDSDK_CONFIG
direktori temp .sumber
Sudahkah Anda melihat
--account
opsi? Suka( Referensi )
Mengenai "Lebih disukai tanpa mengotori sistem file dengan kredensial file", saya tidak yakin apakah mungkin untuk mencapai.
sumber
--account=
setelah kredensial diaktifkan.1) Buat ServiceAccount di GCP IAM. Centang kotak untuk "Berikan kunci pribadi baru", dan pilih JSON sebagai jenis file.
2) Unduh file JSON ke server Anda, dan ketik:
gcloud auth activate-service-account --key-file serviceaccount.json
3) Verifikasi kredensial diterapkan dengan menjalankan
gcloud auth list
.sumber