首页 > 解决方案 > 如何将 Google 存储桶权限授予 Google Speech to text API?

问题描述

我创建了 Google Storage 存储桶来为存储桶中的音频文件执行 Google Speech-to-text。但这不起作用,因为存储桶拒绝访问 Google Speech API。

错误消息:匿名调用者没有 storage.objects.get 访问权限 PERMISSION_DENIED

语音使用 API 密钥进行身份验证,存储使用服务帐户密钥进行身份验证。我已经在存储桶权限中授予了对服务帐户的访问权限。

是否可以授予语音访问存储桶的权限?

我还尝试将存储桶权限授予服务帐户。但它不起作用。

标签: google-cloud-storagegoogle-speech-api

解决方案


您根本没有使用身份验证;这在错误消息中由“匿名调用者”显示。

curl您似乎正在使用或其他工具直接访问 API 。

为了以这种方式进行身份验证,您可以按照这些说明进行操作。查看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”附加到命令以保存请求的文件。


推荐阅读