Heim > Artikel > Backend-Entwicklung > Die GCS-URL kann nicht mit der gcloud-Standardanmeldung signiert werden
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!
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), })
Ich habe eine Fehlermeldung erhalten:
storage: unable to detect default GoogleAccessID: storage: empty client email in credentials
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=a172055c20f3b3671523e8c61e57bc2a
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=a172055c20f3b3671523e8c61e57bc2a
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!