0

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

"rc": 500, "rm": "403 POST https://storage.googleapis.com/upload/storage/v1/b/konxxxxxx/o?uploadType=multipart : ('请求失败,状态码', 403, '预期的一个', )"

我使用自定义标头在邮递员中进行测试:upload_key=asjaisjdaozmzlaljaxxxxx

我像这样卷曲: url --location --request POST ' http://14.210.211.xxx:9001/koxxx/upload_img?img_type=img_x ' --header 'upload_key: asjaisjdaozmzlaljaxxxxx' --form 'img_file=@ /home/user/image.png'

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

4

1 回答 1

0

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

  • 创建服务帐户

    gcloud iam 服务帐户创建 \ $SERVICE_ACCOUNT_NAME \ --display-name $SERVICE_ACCOUNT_NAME

  • 为您的服务帐号添加权限

    gcloud projects add-iam-policy-binding $PROJECT_NAME \ --role roles/bigtable.user \ --member serviceAccount:$SA_EMAIL $SA_EMAIL 是这里的服务帐户。你可以使用:

    SA_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:$SERVICE_ACCOUNT_NAME" \ --format='value(email)')

  • 将服务帐户下载到目标 $SERVICE_ACCOUNT_DEST 并将其保存到变量 $KEY

export KEY=$(gcloud iam service-accounts keys create $SERVICE_ACCOUNT_DEST --iam-account $SA_EMAIL)

于 2019-12-20T11:37:37.630 回答