You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何本地运行GCP Cloud Endpoints?基于OpenAPI.yaml模拟云端认证

本地运行GCP Cloud Endpoints并对齐云端认证(基于OpenAPI配置)

核心方案:用ESPv2本地容器替代nginx

ESPv2是Cloud Endpoints官方服务代理,能直接加载你的OpenAPI.yaml配置,完全复刻云端的路由、认证逻辑,解决nginx无法模拟Endpoints认证的问题。


步骤1:拉取并启动ESPv2本地容器

  1. 拉取官方镜像:
docker pull gcr.io/endpoints-release/endpoints-runtime-serverless:2
  1. 启动容器,挂载你的OpenAPI.yaml并指向本地服务(假设本地服务运行在localhost:8080):
# Linux用户需追加 --add-host host.docker.internal:host-gateway
docker run -d -p 8090:8080 \
  -v $(pwd)/openapi.yaml:/etc/endpoints/openapi.yaml \
  -e ENDPOINTS_SERVICE_NAME=你的服务名.endpoints.你的GCP项目ID.cloud.goog \
  -e BACKEND_SERVICE=http://host.docker.internal:8080 \
  gcr.io/endpoints-release/endpoints-runtime-serverless:2
  • 8090为本地代理端口,所有请求通过该端口转发
  • host.docker.internal用于Docker容器访问宿主机本地服务,Windows/macOS默认支持,Linux需加额外参数

步骤2:确保OpenAPI.yaml包含认证配置

确认你的OpenAPI.yaml已配置和云端一致的认证规则,比如GCP JWT认证:

securityDefinitions:
  google_jwt:
    type: oauth2
    authorizationUrl: ""
    flow: implicit
    x-google-issuer: "https://accounts.google.com"
    x-google-jwks_uri: "https://www.googleapis.com/oauth2/v3/certs"
    x-google-audiences: "你的客户端ID"
security:
  - google_jwt: []

ESPv2会自动根据该配置验证请求中的JWT令牌,和云端逻辑完全一致。

步骤3:生成测试用认证令牌

本地测试时,用GCP CLI生成有效身份令牌:

gcloud auth print-identity-token --audiences=你的客户端ID

发起请求时携带该令牌:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token --audiences=你的客户端ID)" http://localhost:8090/你的端点路径

步骤4:移除main.py中的硬编码端点

现在所有请求路由由ESPv2根据OpenAPI.yaml处理,无需在main.py中硬编码端点,完全对齐云端路由规则。


内容的提问来源于stack exchange,提问作者Joe Alvini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:56:13