有一个使用 GCS 存储/检索文件的 GAE 项目。这些文件还需要由将在 GCE 上运行的代码读取(需要 C++ 库,因此不能在 GAE 上运行)。
在生产中,部署在实际的 GAE > GCS < GCE 上,此设置工作正常。然而,在本地测试和开发是一个不同的故事,我试图弄清楚。
按照建议,我使用 GoogleAppEngineCloudStorageClient 运行 GAE 的 dev_appserver 来访问(模拟的)GCS。文件放在本地 blobstore 中。非常适合测试 GAE。
由于这些不是在本地运行 VM 的 GCE SDK,所以每当我提到本地的“GCE”时,它只是我运行 linux 的本地开发机器。在本地 GCE 方面,我只是使用带有 python 2.x 运行时的默认 boto 库 ( https://developers.google.com/storage/docs/gspythonlibrary ) 与 C++ 代码交互并从 GCS 检索文件. 但是,在开发中,这些文件无法从 boto 访问,因为它们存储在 dev_appserver 的 blobstore 中。
有没有办法将本地 GAE 和 GCE 正确连接到本地 GCS?
目前,我放弃了本地 GCS 部分并尝试使用真正的 GCS。带有 boto 的 GCE 部分很简单。GCS 部分还能够使用 access_token 使用真正的 GCS,因此它使用真正的 GCS 而不是本地 blobstore,方法是:
cloudstorage.common.set_access_token(access_token)
根据文档:
access_token: you can get one by run 'gsutil -d ls' and copy the
str after 'Bearer'.
该令牌的工作时间有限,因此并不理想。有没有办法设置更永久的 access_token?