Die GCS-URL kann nicht mit der gcloud-Standardanmeldung signiert werden

WBOY
Freigeben: 2024-02-08 21:21:28
nach vorne
1184 Leute haben es durchsucht

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

PHP-Editor Zimo kann bei der Verwendung von gcloud auf ein Problem stoßen, das heißt, er kann den Standard-Anmeldenamen nicht zum Signieren der GCS-URL verwenden. Dieses Problem mag für Verwirrung sorgen, aber wir können eine Lösung finden. In diesem Artikel stellen wir vor, wie Sie dieses Problem lösen können, damit Sie gcloud erfolgreich zum Signieren von GCS-URLs verwenden können. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel bietet Ihnen klare und prägnante Lösungen. Lass uns einen Blick darauf werfen!

Frageninhalt

Ich entwickle ein Golang-Backend und verwende cloud.google.com/go/storage 库与我们的 gcs 实例进行通信。目前,我正在使用这个库来签署 url 并将媒体上传到我们的实例。但是,我想避免下载服务帐户密钥文件并出于本地开发目的显式设置 google_application_credentials Umgebungsvariablen. Um dies zu erreichen, habe ich die Benutzeranmeldeinformationen für adc gemäß der Referenzdokumentation bereitgestellt.

Das Hochladen von Medien funktioniert mit der neuen ADC-Konfiguration einwandfrei. Wenn Sie jedoch versuchen, die URL mit dem folgenden Codeausschnitt zu signieren:

u, err := client.bucket(bucket).signedurl(object, &storage.signedurloptions{
        method:  http.methodget,
        expires: time.now().add(365 * 24 * time.hour),
    })
Nach dem Login kopieren

Ich habe eine Fehlermeldung erhalten:

storage: unable to detect default GoogleAccessID: storage: empty client email in credentials
Nach dem Login kopieren

Diese Fehlermeldung ist verwirrend, da ich mich mit gcloud auth application-default login authentifiziert habe, bevor ich den Code ausgeführt habe. Was könnte hier das Problem sein und wie kann ich es beheben?

Bearbeiten: Ich habe versucht, das Flag --impersonate-service-account hinzuzufügen, um auf das Dienstkonto zu verweisen, das über Berechtigungen zur Tokenerstellung verfügt, aber das scheint auch nicht zu funktionieren. --impersonate-service-account 标志,指向具有令牌创建权限的服务帐户,但这似乎也不起作用。

解决方法

显然,这个问题在最新版本的 cloud.google.com/go/storage 中得到了解决(我在 GitHub 讨论中读到了相关内容,但由于某种原因无法再找到链接)。您必须将服务帐户附加到签名 URL,并且该库现在能够获取与模拟关联的 GoogleAccessID。升级到 v1.29.0 并使用 gcloud auth application-default login --impersonate-service-account=<SERVICE_ACCOUNT>

Workaround🎜🎜Anscheinend ist dieses Problem in der neuesten Version von cloud.google.com/go/storage behoben (ich habe in der GitHub-Diskussion darüber gelesen, aber aus irgendeinem Grund kann der Link nicht mehr angezeigt werden gefunden werden). Sie müssen ein Dienstkonto an die signierte URL anhängen, und die Bibliothek kann nun die mit dem Identitätswechsel verknüpfte GoogleAccessID abrufen. Nach dem Upgrade auf v1.29.0 und der Authentifizierung mit gcloud auth application-default login --impersonate-service-account=<SERVICE_ACCOUNT> scheint alles gut zu funktionieren. Stellen Sie sicher, dass Ihrem Benutzerkonto unter dem Dienstkonto die Rolle „Dienstkonto-Token-Ersteller“ zugewiesen ist. 🎜

Das obige ist der detaillierte Inhalt vonDie GCS-URL kann nicht mit der gcloud-Standardanmeldung signiert werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!