Rumah > pembangunan bahagian belakang > Golang > Tidak dapat menandatangani URL GCS menggunakan log masuk lalai gcloud

Tidak dapat menandatangani URL GCS menggunakan log masuk lalai gcloud

WBOY
Lepaskan: 2024-02-08 21:21:28
ke hadapan
1246 orang telah melayarinya

无法使用 gcloud 默认登录名签署 GCS 网址

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!

Kandungan soalan

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),
    })
Salin selepas log masuk

Saya menerima mesej ralat:

storage: unable to detect default GoogleAccessID: storage: empty client email in credentials
Salin selepas log masuk

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>

Penyelesaian🎜🎜Nampaknya isu ini telah diselesaikan dalam versi terkini 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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan