我创建了Google Storage存储桶,以对存储桶中的音频文件执行Google Speech-to-text。但这不起作用,因为存储桶拒绝访问Google Speech API。
错误消息: 匿名呼叫者没有storage.objects.get访问权限PERMISSION_DENIED
Speech使用API密钥进行身份验证,而Storage使用服务帐户密钥进行身份验证。我已经授予了存储桶中服务帐户的访问权限。
是否可以将语音访问权限授予存储桶?
我还尝试将存储桶权限授予服务帐户。但这不起作用。
答案 0 :(得分:0)
您根本不使用身份验证; 错误消息中的“匿名呼叫者”将显示该消息。
似乎您正在使用curl
或其他工具直接访问API。
为了以这种方式进行身份验证,您可以遵循these instructions。
查看curl
示例,但这样做(使用gcloud auth print-access-token
作为从CLI生成访问令牌的简便方法),将“ $ BUCKET_NAME”替换为存储桶名称,并将“ $ OBJECT_NAME”替换为您对象的名称(使用环境变量或字面值):
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -i "https://www.googleapis.com/download/storage/v1/b/$BUCKET_NAME/o/$OBJECT_NAME?alt=media"
但是请小心,因为这会将文件下载到您的终端,并且可能会干扰其显示。为避免这种情况,只需在命令后附加一个“> $ OBJECT_NAME”即可保存请求的文件。