【发布时间】:2018-02-19 16:25:34
【问题描述】:
我正在尝试通过对谷歌云语音执行异步请求来转录托管在谷歌云存储桶中的音频文件。该文件不公开。作为身份验证方法,我使用服务帐户。 谷歌云语音返回权限被拒绝错误。相反,它可以使用公共文件。
我能做什么? 谢谢。
【问题讨论】:
标签: google-cloud-platform google-cloud-storage google-cloud-speech
我正在尝试通过对谷歌云语音执行异步请求来转录托管在谷歌云存储桶中的音频文件。该文件不公开。作为身份验证方法,我使用服务帐户。 谷歌云语音返回权限被拒绝错误。相反,它可以使用公共文件。
我能做什么? 谢谢。
【问题讨论】:
标签: google-cloud-platform google-cloud-storage google-cloud-speech
可以使用不同的选项管理对云存储的访问控制,详见this documentation page。
使用已接受答案中建议的方法,您通过Access Control List (ACL) 提供访问权限。一般来说,建议改用Identity and Access Management (IAM),但是当您需要对单个对象进行精细控制时,使用ACL 是您想要遵循的方法。使用命令 gsutil acl ch -u nameOf@serviceaccount.com:R gs://bucket/object,您提供了对存储桶中特定对象的访问权限,在本例中为托管在 Cloud Storage 中的音频文件。
但是,如果您的想法是将 Speech API 与存储在 Cloud Storage 中的更多文件一起使用,则应考虑使用 IAM role of the list(例如 roles/storage.objectViewer)向您的服务帐户授予权限。这样一来,您的服务帐号就可以访问整个存储桶,而无需为每个单独的文件授予访问权限。
【讨论】:
服务帐户需要读取文件的权限。试试这个:
$ gsutil acl ch -u nameOf@serviceaccount.com:R gs://bucket/object
【讨论】: