繁体   English   中英

从Kubernetes窗格将大文件上传到Google Storage GCE

[英]Uploading large files to Google Storage GCE from a Kubernetes pod

上传大文件(大于10Mb但小于100Mb)时,我们会收到此错误消息:

403 POST https://www.googleapis.com/upload/storage/v1/b/dm-scrapes/o?uploadType=resumable: ('Response headers must contain header', 'location')

或文件大于5Mb时出现此错误

403 POST https://www.googleapis.com/upload/storage/v1/b/dm-scrapes/o?uploadType=multipart: ('Request failed with status code', 403, 'Expected one of', <HTTPStatus.OK: 200>)

看来该API正在查看文件大小,并尝试通过多部分或可恢复方法上传它。 我无法想象这是我应该关注的API调用者。 问题是否与权限相关? 存储桶是否需要特殊许可,它可以接受分段上传或可恢复上传。

from google.cloud import storage

try:
    client = storage.Client()
    bucket = client.get_bucket('my-bucket')
    blob = bucket.blob('blob-name')
    blob.upload_from_filename(zip_path, content_type='application/gzip')

except Exception as e:
    print(f'Error in uploading {zip_path}')
    print(e)

我们在Kubernetes窗格中运行此命令,以便由storage.Client()调用自动获取权限。

我们已经尝试过这些:

提前致谢

问题的确是证书。 不知何故,错误消息非常容易导致误导。 当我们显式加载凭据时,问题就消失了。

 # Explicitly use service account credentials by specifying the private key file.
 storage_client = storage.Client.from_service_account_json(
        'service_account.json')

我发现我的节点池已指定

    oauthScopes:
    - https://www.googleapis.com/auth/devstorage.read_only

并将其更改为

    oauthScopes:
    - https://www.googleapis.com/auth/devstorage.full_control

解决了错误。 本问题中所述,问题是无信息的错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM