将数据存储区管理员映射到其他URL?

时间:2019-01-14 02:17:40

标签: google-app-engine google-cloud-platform google-cloud-datastore

编辑:进一步检查后,我发现数据存储管理员的URL已经为https://ah-builtin-python-bundle-dot-[project-id].appspot.com/_ah/datastore_admin?app_id=[project-id]。可能在实施“默认”标记之前启用了该功能,因此它捕获了所有进入子域的流量。 因此,无需重新映射URL。

有一个我已经添加完成的现有项目,它的[project-id] .appspot.com已经被库存的Datastore Admin页面占用。

我需要托管更多的apppot URL,其中一些URL充当PubSub端点,因此我发现this thread解释说,我需要做的就是在app.yaml中添加服务标签。

但是,在部署时,出现此错误

  

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

“ upload-watcher”是我分配给此App Engine应用的服务名称。

This user面临类似的问题,但是他寻求一种不同的解决方法,而答案仅仅是概念上的。

从机械上讲,这是否是添加到所选app.yaml中的正确代码? :

service: default 

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

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

这怎么办?

1 个答案:

答案 0 :(得分:1)

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

我个人建议将服务保留在GAE应用程序目录中的单独的并行子目录中,请参阅Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?中的实际示例

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

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

更新

是的,service: default对默认服务是正确的。另外,您根本就没有service的配置-效果相同。

根据所使用的部署命令(更具体地为--version可选参数),将创建新的服务版本或将覆盖现有版本。另请参见Continuous integration/deployment/delivery on Google App Engine, too risky?

但是,正如您所观察到的,提供数据存储区管理功能默认情况下是完成的,没有通过配置专门启用,因此无论是否覆盖现有版本都可以使用。