如何添加自定义 header 上传到 Google 云存储?
how to add custom header upload to Google Cloud Storage?
我使用 Flask 创建了一个 API,但是当我创建自定义 header 以上传到我的 Google 云存储时,我在上传时遇到了问题。仅供参考,我的服务器上的权限详细信息与我的本地机器相同,以测试将图像上传到 GCS、管理存储和管理 object 存储,我的本地机器上没有问题。但是当我在我的服务器上 curl 或测试上传到我的 Google 云存储桶时,响应总是相同的:
"rc": 500,
"rm": "403 POST https://storage.googleapis.com/upload/storage/v1/b/konxxxxxx/o?uploadType=multipart: ('Request failed with status code', 403, 'Expected one of', )"
我使用自定义 header 在邮递员中进行测试:
upload_key=asjaisjdaozmzlaljaxxxxx
我 curl 是这样的:
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" 确认我在服务器上使用的登录数据是正确的并且与我的本地计算机相同。
您有权限错误,使用服务帐户方法修复它,简单明了。
创建服务帐户
gcloud iam 服务帐户创建 \
$SERVICE_ACCOUNT_NAME\
--显示名称 $SERVICE_ACCOUNT_NAME
向您的服务帐户添加权限
gcloud 项目 add-iam-policy-binding $PROJECT_NAME \
--role roles/bigtable.user \
--会员服务账号:$SA_EMAIL
$SA_EMAIL 是这里的服务帐户。你可以使用:
SA_EMAIL=$(gcloud iam 服务账户列表 \
--过滤器="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)
使用其余部分上传到云存储桶api:
curl -X POST --data-binary @[OBJECT_LOCATION] \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: [OBJECT_CONTENT_TYPE]" \
“https://storage.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]”
我使用 Flask 创建了一个 API,但是当我创建自定义 header 以上传到我的 Google 云存储时,我在上传时遇到了问题。仅供参考,我的服务器上的权限详细信息与我的本地机器相同,以测试将图像上传到 GCS、管理存储和管理 object 存储,我的本地机器上没有问题。但是当我在我的服务器上 curl 或测试上传到我的 Google 云存储桶时,响应总是相同的:
"rc": 500, "rm": "403 POST https://storage.googleapis.com/upload/storage/v1/b/konxxxxxx/o?uploadType=multipart: ('Request failed with status code', 403, 'Expected one of', )"
我使用自定义 header 在邮递员中进行测试: upload_key=asjaisjdaozmzlaljaxxxxx
我 curl 是这样的: 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" 确认我在服务器上使用的登录数据是正确的并且与我的本地计算机相同。
您有权限错误,使用服务帐户方法修复它,简单明了。
创建服务帐户
gcloud iam 服务帐户创建 \ $SERVICE_ACCOUNT_NAME\ --显示名称 $SERVICE_ACCOUNT_NAME
向您的服务帐户添加权限
gcloud 项目 add-iam-policy-binding $PROJECT_NAME \ --role roles/bigtable.user \ --会员服务账号:$SA_EMAIL $SA_EMAIL 是这里的服务帐户。你可以使用:
SA_EMAIL=$(gcloud iam 服务账户列表 \ --过滤器="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)
使用其余部分上传到云存储桶api:
curl -X POST --data-binary @[OBJECT_LOCATION] \ -H "Authorization: Bearer $KEY" \ -H "Content-Type: [OBJECT_CONTENT_TYPE]" \ “https://storage.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]”