【问题标题】:How to write to local files on Google app engine managed VM如何在 Google 应用引擎管理的虚拟机上写入本地文件
【发布时间】:2016-05-24 13:38:50
【问题描述】:

我正在将文件写入 Google 应用引擎管理的虚拟机(灵活环境)。我已将代码部署到云端。该代码打开文件并写入它而不会显示权限错误等错误。但是,我尝试打开文件的另一个代码失败并显示“没有这样的文件或目录”。

我已经打印了位置目录,所以我使用了 ssh 命令,也找不到托管 vm 中的文件。而且我找不到任何有关将文件写入托管 VM 的本地存储的文档。

那么如何将其写入托管虚拟机?默认存储位置是什么?为什么找不到文件?

【问题讨论】:

  • 文件是否可以写入另一个已被销毁的实例?首先,我会写信给/tmp,这通常对所有用户都是可写的。
  • 我试过了,也找不到那里的文件。它在 docker 容器中

标签: google-app-engine google-managed-vm


【解决方案1】:

在 VM 中找不到文件的原因是 VM 正在运行 Docker 容器,而您的应用实际上位于该容器中。如果你真的想要,你可以docker exec -it <container-name> -- /bin/bash 在容器内四处寻找,然后你应该会看到你的文件(使用docker ps 来查找容器 ID)。

在 App Engine flexible(托管虚拟机的新名称)上,您的代码可以跨多个容器进行扩展,因此无法保证您写入其中的文件以后可以访问。您可以处理一些对某些 /tmp 文件的写入,但仅此而已。将任何数据写入 Cloud Datastore、Cloud SQL、Memcache 或 Cloud Storage 会更好。

【讨论】:

  • 感谢您的回复。您是否有办法使用 cloudstorage 库而不是 gcloud 存储库将文件写入托管 VM 中的云存储?
  • 你指的是哪个云存储库?
  • 这个git clone https://github.com/GoogleCloudPlatform/appengine-gcs-client.git。有关于如何在托管 vm 中使用 from gcloud import storage 的教程,但没有那个 lib。
  • 没用过所以不确定。如果它不能按原样工作,则将 runtime:python 更改为 runtime:python-compat(与 App Engine 标准兼容的运行时)可能会起作用。但我会坚持使用 gcloud-python,因为它是前进的方向。
猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
相关资源
最近更新 更多