端点服务和AppEngine服务具有相同的URL有什么区别?

时间:2019-09-02 14:14:08

标签: rest google-app-engine google-cloud-platform google-cloud-endpoints

我在GCP的Endpoints中有两个服务来托管两个API

他们是

服务A

服务B

服务A的主机是 projectid.appspot.com

服务B的主机是 test-dot-projectid.appspot.com

当我使用gcloud app部署我的应用程序时,将Service A的测试服务部署在 appengine我的app.yaml看起来像这样

runtime: go
env: flex
service: test

endpoints_api_service:
  name: projectid.appspot.com
  rollout_strategy: managed

handlers:
- url: .*  #mandatory
  secure: always  #deprecated in flex environment
  redirect_http_response_code: 301 #optional
  script: _go_app #mandatory

据我了解,该应用已部署到服务A的URL projectid.appspot.com,但使用子域测试,因此为test-dot-projectid.appspot.com

但是,从技术上讲,这现在还不能在默认服务上部署到服务B,即 test-dot-projectid.appspot.com

这是否不干扰通过服务测试在服务A上进行部署?有什么区别?

3 个答案:

答案 0 :(得分:0)

我的理解是:如果服务A是“ projectid.appspot.com”。仅“ projectid.appspot.com”将被路由到A,而不是“ test.projectid.appspot.com”。因此,您可以使用“ test.projectid.appspot.com”安全地部署服务B。但我不确定。你尝试过吗?

答案 1 :(得分:0)

当一个应用程序具有多个服务时,必须配置服务名称,并且名称必须唯一。

默认项目不需要具有服务名称。当存在一个应用程序的单一服务时,情况就是这样。

具有多个服务(服务A,服务B)时,必须首先将应用程序部署到默认服务。之后,每个服务必须具有自己的app.yaml文件。

建议为每个服务配置一个唯一的服务名称,以防止通信错误。如果未为每个服务配置唯一的服务名称,则默认情况下,它将部署到默认服务的URL。您的情况是,由于默认的服务网址和服务A的服务网址相同,因此会引起冲突。

要部署到特定服务的服务名称,您需要指定服务名称及其app.yaml文件。

有关更多信息,请参阅:

规划目录结构和app.yaml命名: https://cloud.google.com/appengine/docs/flexible/go/configuration-files#directory_structure

如何在多服务环境中部署到多个或特定服务: https://cloud.google.com/appengine/docs/flexible/go/testing-and-deploying-your-app#deploying_multiple_services

答案 2 :(得分:0)

App Engine由由一个或多个服务(以前称为模块)组成的应用程序资源组成。每个服务都是独立于代码的,并且可以运行不同的运行时,并且您可以部署该服务的版本。 URL是通过用户请求或对服务的API调用访问应用程序的方式。

有关更多信息,请参见https://cloud.google.com/appengine/docs/standard/python/microservices-on-app-engine#app_engine_services_as_microservices

端点是Google Cloud提供的Cloud Endpoints Framework服务的一部分,用于管理,部署,维护和保护您的API。在App Engine中,仅Python 2.7和Java运行时环境支持Endpoint框架。它是一个工具,可让您为应用程序生成REST API和客户端库。

有关更多信息,请参见 https://cloud.google.com/endpoints/docs/frameworks/about-cloud-endpoints-frameworks