当我为存储 gcp 存储桶中的对象生成带有服务帐户的签名下载 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
},
})
我正在使用的服务帐户具有存储对象创建者和存储对象查看者角色...