client.get_bucket() 失败,但仅来自云数据流(计算引擎)
client.get_bucket() fails, but only from cloud dataflow (compute engine)
应用程序一直正常运行,现在正在重新部署,google存储出现奇怪的错误。
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 核心客户端无法构建 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 但是当我查看计算 VM 上的 docker 图像时我发现它有一个早期版本。
从 setup.py 重建我的 venv 后,我还必须 运行:
C:\Python27\python.exe -m pipenv install google-cloud-core>=1.0.3 --skip-lock
然后我就可以部署了,应用程序又开始工作了。
应用程序一直正常运行,现在正在重新部署,google存储出现奇怪的错误。
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 核心客户端无法构建 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 但是当我查看计算 VM 上的 docker 图像时我发现它有一个早期版本。
从 setup.py 重建我的 venv 后,我还必须 运行:
C:\Python27\python.exe -m pipenv install google-cloud-core>=1.0.3 --skip-lock
然后我就可以部署了,应用程序又开始工作了。