【问题标题】:How can I use Google cloud Storage with django-storages如何将 Google 云存储与 django-storages 一起使用
【发布时间】:2018-05-18 14:04:09
【问题描述】:

使用 App Engine。 我读了这个页面。 Configure Django and Google Cloud Storage? 我安装了 django-storages 和 boto。我这样设置我的设置文件。

DEFAULT_FILE_STORAGE = 'storages.backends.gs.GSBotoStorage'
GS_ACCESS_KEY_ID = '***@***.iam.gserviceaccount.com'
GS_SECRET_ACCESS_KEY = '***'
GS_BUCKET_NAME = '***'
STATICFILES_STORAGE = 'storages.backends.gs.GSBotoStorage'

然后我运行这段代码

from django.core.files.storage import default_storage
default_storage.exists('storage_test')

然后我得到了这个错误。

---------------------------------------------------------------------------
GSResponseError                           Traceback (most recent call last)
<ipython-input-2-8a49776d7c1d> in <module>()
      1 from django.core.files.storage import default_storage
----> 2 default_storage.exists('storage_test')

/Users/trmt_8/.pyenv/versions/3.5.0/lib/python3.5/site-packages/storages/backends/s3boto.py in exists(self, name)
    433                 return False
    434 
--> 435         return self._get_key(name) is not None
    436 
    437     def listdir(self, name):

/Users/trmt_8/.pyenv/versions/3.5.0/lib/python3.5/site-packages/storages/backends/s3boto.py in _get_key(self, name)
    419         if self.entries:
    420             return self.entries.get(name)
--> 421         return self.bucket.get_key(self._encode_name(name))
    422 
    423     def delete(self, name):

/Users/trmt_8/.pyenv/versions/3.5.0/lib/python3.5/site-packages/boto/gs/bucket.py in get_key(self, key_name, headers, version_id, response_headers, generation)
    109         try:
    110             key, resp = self._get_key_internal(key_name, headers,
--> 111                                                query_args_l=query_args_l)
    112         except GSResponseError as e:
    113             if e.status == 403 and 'Forbidden' in e.reason:

/Users/trmt_8/.pyenv/versions/3.5.0/lib/python3.5/site-packages/boto/s3/bucket.py in _get_key_internal(self, key_name, headers, query_args_l)
    230             else:
    231                 raise self.connection.provider.storage_response_error(
--> 232                     response.status, response.reason, '')
    233 
    234     def list(self, prefix='', delimiter='', marker='', headers=None,

GSResponseError: GSResponseError: 403 Access denied to 'gs://***/storage_test'.

我该如何解决这个问题。请帮助我!

这是django-storages的文件

【问题讨论】:

  • 您是否设置了名为:GOOGLE_APPLICATION_CREDENTIALS 的环境变量?您应该可以从您的 gcloud 控制台下载它(一个 .json 文件)。见cloud.google.com/docs/authentication/…
  • 哦!我没有设置。谢谢!现在可以使用了!

标签: django google-cloud-storage


【解决方案1】:

您可能想要设置名为:GOOGLE_APPLICATION_CREDENTIALS 的环境变量。您应该可以从您的 gcloud 控制台下载它(一个 .json 文件)。

更多详情请见documention

【讨论】:

    猜你喜欢
    • 2014-10-25
    • 1970-01-01
    • 2019-10-24
    • 2016-12-28
    • 2018-02-28
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多