Editor PHP Zimo mungkin menghadapi masalah semasa menggunakan gcloud, iaitu, dia tidak boleh menggunakan nama log masuk lalai untuk menandatangani URL GCS. Masalah ini mungkin menimbulkan kekeliruan, tetapi kita boleh mencari penyelesaiannya. Dalam artikel ini, kami akan memperkenalkan cara menyelesaikan masalah ini supaya anda boleh berjaya menggunakan gcloud untuk menandatangani URL GCS. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini akan memberikan anda penyelesaian yang jelas dan ringkas. Mari lihat!
Saya sedang membangunkan bahagian belakang golang dan menggunakan cloud.google.com/go/storage
库与我们的 gcs 实例进行通信。目前,我正在使用这个库来签署 url 并将媒体上传到我们的实例。但是,我想避免下载服务帐户密钥文件并出于本地开发目的显式设置 google_application_credentials
pembolehubah persekitaran. Untuk mencapai matlamat ini, saya menyediakan kelayakan pengguna untuk adc mengikut dokumentasi rujukan.
Memuat naik media berfungsi dengan baik dengan konfigurasi adc baharu. Walau bagaimanapun, apabila cuba menandatangani url menggunakan coretan kod berikut:
u, err := client.bucket(bucket).signedurl(object, &storage.signedurloptions{ method: http.methodget, expires: time.now().add(365 * 24 * time.hour), })
Saya menerima mesej ralat:
storage: unable to detect default GoogleAccessID: storage: empty client email in credentials
Mesej ralat ini mengelirukan kerana saya mengesahkan menggunakan gcloud auth application-default login
sebelum melaksanakan kod. Apakah masalah di sini dan bagaimana saya boleh membetulkannya?
Sunting:
Saya cuba menambah bendera --impersonate-service-account
untuk menunjuk ke akaun perkhidmatan yang mempunyai kebenaran penciptaan token, tetapi itu nampaknya tidak berfungsi juga. --impersonate-service-account
标志,指向具有令牌创建权限的服务帐户,但这似乎也不起作用。
显然,这个问题在最新版本的 cloud.google.com/go/storage
中得到了解决(我在 GitHub 讨论中读到了相关内容,但由于某种原因无法再找到链接)。您必须将服务帐户附加到签名 URL,并且该库现在能够获取与模拟关联的 GoogleAccessID
。升级到 v1.29.0
并使用 gcloud auth application-default login --impersonate-service-account=<SERVICE_ACCOUNT>
cloud.google.com/go/storage
(Saya membaca tentangnya dalam perbincangan GitHub, tetapi atas sebab tertentu Pautan tidak boleh lagi ditemui). Anda mesti menambahkan akaun perkhidmatan pada URL yang ditandatangani dan pustaka kini boleh mendapatkan GoogleAccessID
yang dikaitkan dengan penyamaran. Selepas menaik taraf kepada v1.29.0
dan mengesahkan menggunakan gcloud auth application-default login --impersonate-service-account=<SERVICE_ACCOUNT>
semuanya nampaknya berfungsi dengan baik. Pastikan akaun pengguna anda mempunyai peranan "Pencipta Token Akaun Perkhidmatan" yang diberikan di bawah akaun perkhidmatan. 🎜Atas ialah kandungan terperinci Tidak dapat menandatangani URL GCS menggunakan log masuk lalai gcloud. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!