Flex应用引擎上的google端点

时间:2016-12-29 17:14:43

标签: google-app-engine google-cloud-platform google-cloud-endpoints google-managed-vm

当我们使用std app引擎环境的端点时 在app.yaml中跟随行,定义应用程序的起点

- url: /_ah/spi/.*
  script: main.api 

但是,随着灵活引擎使用“gunicorn”#39;定义下面给出的起始点

entrypoint: gunicorn -b :$PORT main:app

如何将我的云端点的main.py定义为灵活环境中谷歌应用引擎的起点?

EDIT1:

this link下面的建议之后

我将app.yaml更新为:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:api
service: s2

endpoints_api_service:
  name: echo-api.endpoints.my-project-id.cloud.goog
  config_id: my-config-id

但现在在部署时,在我的main.py文件中出现导入错误

ImportError: No module named endpoints

甚至将导入声明更改为

from google.appengine.ext import endpoints

无效

EDIT2:

我将端点库添加到项目lib文件夹中,并添加了 appengine_config.py 文件来处理这个库,但它仍然在import endpoints处断开。

我的目录结构请参考下面的图片

enter image description here

3 个答案:

答案 0 :(得分:1)

来自Quickstart for Endpoints on App Engine Flexible Environment的摘要(假设下面是python,如果使用其他语言选择相应的示例):

  • 配置端点:
  

要配置端点,请将YOUR-PROJECT-ID替换为您自己的端点   openapi.yaml配置文件的主机字段中的项目ID:

swagger: "2.0"
info:
  description: "A simple Google Cloud Endpoints API example."
  title: "Endpoints Example"
  version: "1.0.0"
host: "echo-api.endpoints.YOUR-PROJECT-ID.cloud.goog"
  • 部署您的Open API规范:
  

要部署Open API规范,请运行以下gcloud   命令:

gcloud service-management deploy openapi.yaml
     

这将创建一个名为的新的Cloud Endpoints服务   echo-api.endpoints.YOUR-PROJECT_ID.cloud.goog如果不存在,   然后将该服务的配置更新到您的Open API   说明书

     

该命令返回几行信息,包括一行   类似于以下内容:

Service Configuration [2016-04-27R2] uploaded for service
"echo-api.endpoints.[YOUR-PROJECT-ID].cloud.goog"
     

记下服务名称和服务配置ID   用于下一步。

  • 更新您的app.yaml
  

编辑app.yaml以反映端点配置ID并添加   以下是在App Engine上启用端点API管理功能   Flex并添加服务名称和配置ID:

beta_settings:
  use_endpoints_api_management: true

endpoints_api_service:
  name: echo-api.endpoints.[YOUR-PROJECT-ID].cloud.goog
  config_id: YOUR-CONFIG-ID # 2016-04-27R2 in this example.
     

保存app.yaml文件。您需要重复这些步骤   更改Open API时更新app.yaml文件   说明书

答案 1 :(得分:1)

对于Endpoints Frameworks v1.0,您必须将端点模块复制到app目录中以在Flex上部署它。如果您使用的是Cloud SDK,则它位于/path/to/google-cloud-sdk/platform/google_appengine/lib/endpoints-1.0

答案 2 :(得分:0)

您引用的文档/链接是Google App Engine提供的可扩展服务代理,它使用可以使用普通http请求调用的OpenAPI规范。可以使用App Engine提供的Access Control来限制端点服务的入口。整个过程只适用于App Engine灵活环境。

Flex上的OverView GAE端点

可扩展服务代理需要与我们的传统端点配置不同。

  • 使用 gcloud service-management deploy openapi.yaml
  • 部署开放式API配置
  • 部署API后端。 gcloud service-management configs list --service = [YOUR-PROJECT-ID] .appspot.com
  • 在app.yaml中替换ENDPOINTS-SERVICE-NAME和ENDPOINTS-CONFIG-ID,然后使用gcloud app deploy进行部署

对于App Engine标准环境用户,可以使用新版本的端点(Endpoint Framework 2.0)。目前,App Engine Flexible Environment不支持端点框架。如果您想使用现有代码,建议您使用migration to Endpoint Frameworks 2.0