首頁 > 後端開發 > Golang > 主體

無法使用 gcloud 預設登入名稱簽署 GCS 網址

WBOY
發布: 2024-02-08 21:21:28
轉載
1144 人瀏覽過

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

php小編子墨在使用gcloud時,可能會遇到一個問題,就是無法使用預設的登入名稱簽署GCS網址。這個問題可能會導致一些困擾,但我們可以找到解決方案。在這篇文章中,我們將介紹如何解決這個問題,讓您能夠順利地使用gcloud來簽署GCS網址。無論您是初學者還是有經驗的開發者,本文都將為您提供清晰明了的解決方案。讓我們一起來看看吧!

問題內容

我正在開發 golang 後端,並使用 cloud.google.com/go/storage 函式庫與我們的 gcs 實例進行通訊。目前,我正在使用這個庫來簽署 url 並將媒體上傳到我們的實例。但是,我想避免下載服務帳戶金鑰檔案並出於本地開發目的明確設定 google_application_credentials 環境變數。為了實現這一目標,我按照參考文件提供了 adc 的使用者憑證。

使用新的 adc 設定上傳媒體運作正常。但是,當嘗試使用以下程式碼片段對 url 進行簽署時:

u, err := client.bucket(bucket).signedurl(object, &storage.signedurloptions{
        method:  http.methodget,
        expires: time.now().add(365 * 24 * time.hour),
    })
登入後複製

我收到一條錯誤訊息:

storage: unable to detect default GoogleAccessID: storage: empty client email in credentials
登入後複製

此錯誤訊息令人費解,因為我在執行程式碼之前使用 gcloud auth application-default login 進行了身份驗證。這裡可能存在什麼問題,我該如何解決它?

編輯: 我嘗試新增 --impersonate-service-account 標誌,指向具有令牌建立權限的服務帳戶,但這似乎也不起作用。

解決方法

顯然,這個問題在最新版本的cloud.google.com/go/storage 中得到了解決(我在GitHub 討論中讀到了相關內容,但由於某種原因無法再找到連結)。您必須將服務帳戶附加到簽名 URL,並且該庫現在能夠取得與模擬關聯的 GoogleAccessID。升級到 v1.29.0 並使用 gcloud auth application-default login --impersonate-service-account=<SERVICE_ACCOUNT> 進行身份驗證後,一切似乎都正常工作。確保您的使用者帳戶在服務帳戶下指派「服務帳戶令牌建立者」角色。

以上是無法使用 gcloud 預設登入名稱簽署 GCS 網址的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!