Flask 如何将自定义头上传添加到Google云存储?

Flask 如何将自定义头上传添加到Google云存储?,flask,google-cloud-platform,google-cloud-storage,flask-restful,custom-headers,Flask,Google Cloud Platform,Google Cloud Storage,Flask Restful,Custom Headers,我使用Flask创建API,但当我创建自定义头以上载到我的Google云存储时,上载遇到了问题。仅供参考,我的服务器上的权限详细信息与我的本地计算机上的权限详细信息相同。要测试将图像上载到GCS、管理员存储和管理员对象存储,我的本地计算机上没有问题。但当我在我的服务器上卷曲或测试上传到我的Google云存储桶时,响应总是一样的: “rc”:500, “rm:“403 POST:('Request failed with status code',403',应为',中的一个) 使用自定义标题在po

我使用Flask创建API,但当我创建自定义头以上载到我的Google云存储时,上载遇到了问题。仅供参考,我的服务器上的权限详细信息与我的本地计算机上的权限详细信息相同。要测试将图像上载到GCS、管理员存储和管理员对象存储,我的本地计算机上没有问题。但当我在我的服务器上卷曲或测试上传到我的Google云存储桶时,响应总是一样的:

“rc”:500, “rm:“403 POST:('Request failed with status code',403',应为',中的一个)

使用自定义标题在postman中进行im测试: upload_key=asjaisjdaozmlajaxxx

我像这样卷曲: url--位置--请求帖子“”--标题“upload_key:asjaisjdaozmlajaxxxxx”--格式“img_file=@/home/user/image.png”


我已经用“gcloud auth list”确认了我在服务器上使用的登录数据是正确的,并且与我的本地计算机相同。

您有一个权限错误,要修复它,请使用服务帐户方法,它简单明了

  • 创建服务帐户

    gcloud iam服务帐户创建\ $SERVICE\u帐户\u名称\ --显示名称$服务\帐户\名称

  • 向您的服务帐户添加权限

    gcloud项目添加iam策略绑定$PROJECT\u NAME\ --角色/bigtable.user\ --会员服务帐户:$SA_电子邮件 $SA_EMAIL是此处的服务帐户。您可以通过以下方式获得:

    SA_电子邮件=$(gcloud iam服务帐户列表\ --filter=“displayName:$SERVICE\u ACCOUNT\u NAME”\ --format='value(电子邮件)')

  • 将服务帐户下载到目标$service\u account\u DEST并将其保存到变量$KEY

导出密钥=$(gcloud iam服务帐户密钥创建$service\u ACCOUNT\u DEST--iam帐户$SA\u电子邮件)

  • 使用rest api上传到云存储桶:

    curl-X POST--数据二进制@[对象位置]\ -H“授权:持有人$KEY”\ -H“内容类型:[对象内容类型]”\ “”


感谢您之前的回答,但我已经尝试了上述方法,结果仍然相同,我再次尝试的是:1。将SA更改为项目所有者2。使用承载密钥上传,我从“gcloud auth print access token”3获得密钥。因为我使用的服务帐户使用的是json文件。我已经使用json文件激活了SA名称。使用“gcloud auth activate service account SA name--key file=/path/*.json--project=project id 4。gcloud init我选择SA name连接json文件。但这并不能解决问题:((你的评论中有一些我不明白的地方;你说的“使用承载密钥上传,我从“gcloud auth print access token”“。您应该使用服务帐户生成的密钥文件作为承载密钥,而不是“gcloud auth print access token”中的密钥。”谢谢,我已经解决了我的问题。我只是在拉取并重新编译代码后导出文件json。我在我的env文件中将变量文件json设置为静态。文件json是来自google的凭证服务帐户。谢谢。