python - client.get_bucket() 失败,但仅来自云数据流(计算引擎)

标签 python google-cloud-storage google-cloud-dataflow

应用程序一直正常工作,现在重新部署,谷歌存储出现奇怪的错误。

MissingSchema:无效 URL“None/storage/v1/b/my-bucket-name?projection=noAcl”:未提供架构。也许你的意思是 http://None/storage/v1/b/my-bucket-name?projection=noAcl

  File "/usr/local/lib/python2.7/dist-packages/lib/file_store.py", line 11, in __init__
    self.bucket = self.client.get_bucket(parts[0])
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/storage/client.py", line 301, in get_bucket
    bucket.reload(client=self)
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/storage/_helpers.py", line 130, in reload
    _target_object=self,
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/_http.py", line 392, in api_request
    target_object=_target_object,
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/_http.py", line 269, in _make_request
    return self._do_request(method, url, headers, data, target_object)
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/_http.py", line 298, in _do_request
    return self.http.request(url=url, method=method, headers=headers, data=data)
  File "/usr/local/lib/python2.7/dist-packages/google/auth/transport/requests.py", line 208, in request
    method, url, data=data, headers=request_headers, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 519, in request
    prep = self.prepare_request(req)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 462, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 313, in prepare
    self.prepare_url(url, params)
  File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 387, in prepare_url
    raise MissingSchema(error)
MissingSchema: Invalid URL 'None/storage/v1/b/my-bucket-name?projection=noAcl': No schema supplied. Perhaps you meant http://None/storage/v1/b/my-bucket-name?projection=noAcl? [while running 'generatedPtransform-51']

导致错误的代码,我可以使用相同的服务帐户在本地运行它,它可以工作,没有错误。我正在使用 $env:GOOGLE_APPLICATION_CREDENTIALS 在部署时导出我的服务帐户凭据。所有其他服务均正常工作。

# My test is:
# fs = FileStore("gs://my-bucket-name/models/", "development", "general")

class FileStore():
    # modelPath - must be a gs:// style google storage resource path containing everything but the file extension
    def __init__(self, modelPath, env, modelName):
        from google.cloud import storage

        parts = modelPath[5:].split('/', 1)
        self.client = storage.Client()
        self.bucket = self.client.get_bucket(parts[0]) # <- error here

为什么 google core 客户端无法构建 URL?根据“None/storage/v1/b/my-bucket-name?projection=noAcl”,URL 的缺失部分应类似于“https://www.googleapis.com ”。

最佳答案

此错误显然是由 google_cloud_storage 和 google_cloud_core 之间不匹配引起的。我在 setup.py 中指定了 google_cloud_core >= 1.0.3,但是当我查看计算虚拟机上的 docker 镜像时,我发现它有一个早期版本。

从 setup.py 重建我的 venv 后,我还必须运行:

C:\Python27\python.exe -m pipenv install google-cloud-core>=1.0.3 --skip-lock

然后我就可以进行部署并且应用程序再次开始工作。

关于python - client.get_bucket() 失败,但仅来自云数据流(计算引擎),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828951/

相关文章:

python - "try: input() except KeyboardInterrupt:"有解决方法吗

python Pandas 调用 groupby.agg 中的复杂函数

google-app-engine - 如何在受 IAP 保护时使用 App Engine HTTP 运行 Cloud Scheduler 作业

Firebase 函数 1.0.0 迁移 : Trouble with custom initializeApp() with Google Service Account credential

python - 在 python 中使用 BigQuery 接收器流式传输管道

python - 如何将日期时间字符串中的时间从 24 :00 to 00:00 in Python? 转换为

python - scipy 优化 fmin ValueError : setting an array element with a sequence

google-app-engine - 在 "unexpected error"中使用 google cloud 添加计费方式

python - Dataflow SDK 2.7.0,同时附加安装程序 2.10.0

google-bigquery - Dataflow Runner - 尝试刷新以获取初始 access_token