首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在GCS中存储数据,同时从GAE和'GCE‘本地访问数据

如何在GCS中存储数据,同时从GAE和'GCE‘本地访问数据
EN

Stack Overflow用户
提问于 2013-09-13 16:36:56
回答 4查看 2.8K关注 0票数 28

有一个GAE项目使用GCS来存储/检索文件。这些文件还需要由在GCE上运行的代码读取(需要C++库,因此不能在GAE上运行)。

在生产环境中,部署在实际的GAE > GCS < GCE上,这个设置可以很好地工作。然而,在本地测试和开发是另一回事,我正在努力弄清楚。

按照建议,我使用GoogleAppEngineCloudStorageClient运行GAE的dev_appserver来访问(模拟的) GCS。文件放在本地blobstore中。非常适合测试GAE。

因为它们不是在本地运行VM的GCE SDK,所以每当我提到本地“GCE”时,它只是我运行linux的本地开发机器。在本地GCE端,我只使用默认boto库(https://developers.google.com/storage/docs/gspythonlibrary)和python2.x运行时来与C++代码交互,并从GCS检索文件。但是,在开发过程中,这些文件无法从boto访问,因为它们存储在dev_appserver的blobstore中。

有没有办法将本地GAE和GCE正确连接到本地GCS?

现在,我放弃了本地GCS部分,并尝试使用真正的GCS。使用boto的GCE部分很简单。GCS部件还能够使用使用access_token的真实GCS,因此它通过以下方式使用真实GCS而不是本地blobstore:

代码语言:javascript
复制
cloudstorage.common.set_access_token(access_token)

根据文档:

代码语言:javascript
复制
access_token: you can get one by run 'gsutil -d ls' and copy the
  str after 'Bearer'.

该令牌在有限的时间内有效,因此这并不理想。有没有办法设置一个更永久的access_token?

EN

回答 4

Stack Overflow用户

发布于 2016-01-09 01:41:56

有一个方便的选项可以从开发环境访问Google Cloud Storage。您应该使用Google Cloud SDK提供的客户端库。在本地执行gcloud init之后,您可以访问您的资源。

Client library authentication的示例所示

代码语言:javascript
复制
# Get the application default credentials. When running locally, these are
# available after running `gcloud init`. When running on compute
# engine, these are available from the environment.
credentials = GoogleCredentials.get_application_default()

# Construct the service object for interacting with the Cloud Storage API -
# the 'storage' service, at version 'v1'.
# You can browse other available api services and versions here:
#     https://developers.google.com/api-client-library/python/apis/
service = discovery.build('storage', 'v1', credentials=credentials)
票数 1
EN

Stack Overflow用户

发布于 2016-07-29 01:54:30

如果你一直在使用“真正的”远程GCS,那么新的gcloud可能是最好的库:http://googlecloudplatform.github.io/gcloud-python/

Python的存储客户端库有多少真的很让人困惑。有些仅用于AE,但在与dev_appserver.py一起运行时,它们经常强制(或至少默认)使用本地模拟Blobstore。

似乎gcloud总是使用真正的GCS,这正是我想要的。它还可以在本地运行时“神奇地”修复身份验证。

票数 0
EN

Stack Overflow用户

发布于 2016-02-20 12:21:20

看起来Python t现在只对生产应用程序引擎和dev_appserver.py内部有用,并且它的本地示例已经从开发人员文档中删除,转而使用Boto :(如果您决定不使用本地GCS仿真,那么在本地测试和dev_appserver.py中最好都使用Boto。

如果你仍然想使用'google.appengine.ext.cloudstorage‘,访问令牌总是过期的,所以你需要手动刷新它。老实说,给出你的设置,最简单的事情就是从Python中调用'gsutil -d ls‘并解析输出,从你的本地凭证中获得一个新的令牌。您可以使用API Client Library以更“正确”的方式获取令牌,但在这一点上,事情会变得如此曲折,您可能只需要使用Boto。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18781829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档