首页 > 解决方案 > 将 Datastore Admin 映射到不同的 URL?

问题描述

编辑:经过进一步检查,我发现 Datastore Admin 的 URL 已经是https://ah-builtin-python-bundle-dot-[project-id].appspot.com/_ah/datastore_admin?app_id=[project-id]. 它可能在实施“默认”标签之前启用,因此它正在捕获所有进入子域的流量。因此,无需重新映射 URL。

我已经添加了这个现有项目来处理它,它的 [project-id].appspot.com 已经被一个库存数据存储管理页面占用。

我需要托管更多的应用程序 URL,其中一些用作 PubSub 端点,所以我发现这个线程解释说我需要做的就是在 app.yaml 中添加一个服务标签。

但是,在部署时,我收到此错误

错误:(gcloud.app.deploy)INVALID_ARGUMENT:您上传到新应用程序的第一个服务(模块)必须是“默认”服务(模块)。请在上传“upload-watcher”服务(模块)的版本之前上传“默认”服务(模块)的版本。有关更多信息,请参阅文档。Python:(https://developers.google.com/appengine/docs/python/modules/#Python_Uploading%%20modules)Java:(https://developers.google.com/appengine/docs/java/modules/#Java_Uploading %%20个模块

'upload-watcher' 是我分配给此应用引擎应用的服务名称。

该用户遇到了类似的问题,但他寻求了不同的解决方法,而答案只是概念性的。

机械地,这是添加到所选 app.yaml 中的正确代码吗?:

service: default 

此外,在我看来,Datastore Admin 不应该成为默认服务,并且应该或多或少地从公众视野中隐藏起来。因此,理想情况下,我想将数据存储管理员重新映射到辅助服务 URL,例如

datastore-admin-dot-[project-id].appspot.com

如何才能做到这一点?

标签: google-app-enginegoogle-cloud-platformgoogle-cloud-datastore

解决方案


您提到的第一个线程中讨论的解决方案意味着新服务的单独.yaml配置文件,而不仅仅是a service tag into the app.yaml file(现有的)。

就我个人而言,我建议将服务保存在 GAE 应用程序目录内单独的并排子目录中,请参阅Can a default service/module in a Google App Engine app be an Brother of an non-default one in the folder结构体?

default您遇到的错误与您提到的第二个线程类似:您在尝试部署服务时没有已部署的upload-watcher服务。

不要过多地考虑数据存储管理“映射”部分 - 您可能会被第二个线程误导 - 数据存储管理不是 GAE 服务/模块,它是一个应用级设施,涵盖了所有共享的应用程序服务应用程序的数据存储。首先让您的服务运行,如果您在这个方向上看到问题,请提出一个单独的问题,现在它只会增加混乱。

更新:

是的,service: default默认服务是正确的。或者,您可以根本没有service配置 - 效果相同。

根据使用的部署命令(更具体地说是--version可选参数),将创建新的服务版本或覆盖现有版本。另请参阅Google App Engine 上的持续集成/部署/交付,风险太大?

但是,正如您所观察到的,为数据存储管理设施提供服务是默认完成的,而不是通过配置特别启用,因此无论是否覆盖现有版本,它都可以工作。


推荐阅读