Maison >développement back-end >Golang >Impossible de signer l'URL GCS à l'aide de la connexion par défaut de gcloud
L'éditeur PHP Zimo peut rencontrer un problème lors de l'utilisation de gcloud, c'est-à-dire qu'il ne peut pas utiliser le nom de connexion par défaut pour signer l'URL GCS. Ce problème peut prêter à confusion, mais nous pouvons trouver une solution. Dans cet article, nous expliquerons comment résoudre ce problème afin que vous puissiez utiliser gcloud avec succès pour signer les URL GCS. Que vous soyez débutant ou développeur expérimenté, cet article vous apportera des solutions claires et concises. Nous allons jeter un coup d'oeil!
Je développe un backend Golang et j'utilise cloud.google.com/go/storage
库与我们的 gcs 实例进行通信。目前,我正在使用这个库来签署 url 并将媒体上传到我们的实例。但是,我想避免下载服务帐户密钥文件并出于本地开发目的显式设置 google_application_credentials
des variables d'environnement. Pour y parvenir, j'ai fourni les informations d'identification de l'utilisateur pour adc conformément à la documentation de référence.
Le téléchargement de médias fonctionne correctement avec la nouvelle configuration adc. Cependant, lorsque vous essayez de signer l'URL en utilisant l'extrait de code suivant :
u, err := client.bucket(bucket).signedurl(object, &storage.signedurloptions{ method: http.methodget, expires: time.now().add(365 * 24 * time.hour), })
J'ai reçu un message d'erreur :
storage: unable to detect default GoogleAccessID: storage: empty client email in credentials
Ce message d'erreur prête à confusion car je me suis authentifié en utilisant gcloud auth application-default login
avant d'exécuter le code. Quel pourrait être le problème ici et comment puis-je le résoudre ?
Modifier :
J'ai essayé d'ajouter l'indicateur --impersonate-service-account
pour pointer vers le compte de service disposant des autorisations de création de jetons, mais cela ne semble pas fonctionner non plus. --impersonate-service-account
标志,指向具有令牌创建权限的服务帐户,但这似乎也不起作用。
显然,这个问题在最新版本的 cloud.google.com/go/storage
中得到了解决(我在 GitHub 讨论中读到了相关内容,但由于某种原因无法再找到链接)。您必须将服务帐户附加到签名 URL,并且该库现在能够获取与模拟关联的 GoogleAccessID
。升级到 v1.29.0
并使用 gcloud auth application-default login --impersonate-service-account=a172055c20f3b3671523e8c61e57bc2a
cloud.google.com/go/storage
(j'en ai entendu parler dans la discussion GitHub, mais pour une raison quelconque, le lien ne peut plus être trouvé). Vous devez ajouter un compte de service à l'URL signée et la bibliothèque peut désormais obtenir le GoogleAccessID
associé à l'usurpation d'identité. Après la mise à niveau vers v1.29.0
et l'authentification à l'aide de gcloud auth application-default login --impersonate-service-account=a172055c20f3b3671523e8c61e57bc2a
, tout semble fonctionner correctement. Assurez-vous que votre compte utilisateur dispose du rôle « Créateur de jeton de compte de service » attribué sous le compte de service. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!