2

当我们在标准应用引擎环境中使用端点时,在 app.yaml 中的以下几行,定义了应用程序的起点

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

但是由于 flex 引擎使用“gunicorn”来定义如下所示的起点

entrypoint: gunicorn -b :$PORT main:app

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

编辑1:

此链接的以下建议之后。

我将 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

没有帮助

编辑2:

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

对于我的目录结构,请参阅下图

在此处输入图像描述

4

3 回答 3

1

App Engine 柔性环境中端点快速入门的摘要(假设下面是 python,如果使用其他语言,请选择相应的示例):

  • 配置端点:

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

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"
  • 部署您的开放 API 规范:

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

gcloud service-management deploy openapi.yaml

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

该命令返回多行信息,包括类似于以下的行:

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

记下服务名称和服务配置 ID,在下一步中使用。

  • 更新你的app.yaml

编辑app.yaml以反映 Endpoints 配置 ID 并添加以下内容以在 App Engine Flex 上启用 Endpoints API 管理功能并添加服务名称和配置 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文件。app.yaml当您对 Open API 规范进行更改时,您将需要重复这些步骤并更新文件。

于 2016-12-29T19:01:48.147 回答
1

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

于 2016-12-29T21:23:32.323 回答
0

您引用的文档/链接是 Google App Engine 提供的可扩展服务代理,它使用 OpenAPI 规范,可以使用普通的 http 请求调用。可以通过使用App Engine 提供的访问控制来限制对端点服务的访问。整个事情只适用于 App Engine 柔性环境。

在 Flex 上查看 GAE 端点

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

  • 使用gcloud service-management deploy openapi.yaml部署开放 API 配置
  • 部署 API 后端。gcloud 服务管理配置列表 --service=[YOUR-PROJECT-ID].appspot.com
  • 替换 app.yaml 中的 ENDPOINTS-SERVICE-NAME 和 ENDPOINTS-CONFIG-ID,然后使用 gcloud app deploy 进行部署

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

于 2017-06-19T05:57:38.097 回答