我正在尝试实现一个函数,该函数将为Cloud Storage对象返回签名的Urls(我知道它是beta版本,尚未正式支持go)。
我让它在本地使用
url, err := storage.SignedURL(bucket, filename, &storage.SignedURLOptions{
GoogleAccessID: "my-service-account@my-project.iam.gserviceaccount.com",
PrivateKey: pkey,
Method: "GET",
Expires: time.Now().Add(90 * time.Minute),
Scheme: storage.SigningSchemeV4,
})
一切正常,我使用GOOGLE_APPLICATION_CREDENTIALS
环境变量指向my-service-account.json
密钥文件。
当我将相同的代码部署到云函数时,尝试访问时,生成的URL都将返回403
。
我确实使用
部署了功能
--service-account my-service-account@my-project.iam.gserviceaccount.com
并且我可以在云控制台中验证该功能是否正在该服务帐户下运行。
根据我的理解,这应该意味着两个实例在相同的凭据/权限下运行,但只有本地运行的实例会生成有效的URL,而Cloud部署的版本则不会。
我在这里想念什么,如何使它起作用?