[英]Signed url for gcp bucket object fails with access denied
當我在存儲 gcp 存儲桶中生成帶有 object 服務帳戶的簽名下載 url 時,我希望任何人都可以在沒有身份驗證的情況下使用它。 但是,我不斷收到“匿名調用者沒有 storage.objects.get 訪問 Google Cloud Storage 對象的權限”。 我究竟做錯了什么?
url, err := gcs.SignedURL(bktName, so.Name(), &gcs.SignedURLOptions{
GoogleAccessID: serviceAccountName,
Method: "GET",
Expires: time.Now().Add(duration),
ContentType: md.RenditionMetadata[0].ContentType,
Headers: []string{fmt.Sprintf("x-goog-meta-filename: %s", md.RenditionMetadata[0].FileName)},
SignBytes: func(b []byte) ([]byte, error) {
signedBlob, err := iam.SignBlob(s.GoogleIamService(), serviceAccountName, b)
if err != nil {
return nil, err
}
return []byte(signedBlob), err
},
})
我使用的服務帳戶具有存儲 Object 創建者和存儲 Object 查看者角色...
按照創建簽名 URL 的指南下載 object: https://cloud.google.com/storage--docs-samples/storage-url
或者,您可以使用 gsutil 命令創建簽名的 URl: https://cloud.google.com/storage/docs/gsutil/commands/signurl
如果您在創建簽名 url 時指定標頭,則必須在“卷曲”生成的 url 時包含它們;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.