通过 HTTPS 请求进行调用

创建服务或函数后,Cloud Run 会为您提供该服务的 HTTPS 端点。您可以启用该服务,以运行来响应 HTTPS 请求。

所有 Cloud Run 服务都有稳定的 HTTPS 网址,它表示服务的默认 HTTPS 端点,不过您也可以配置自定义网域

部分应用场景包括:

  • 自定义 RESTful Web API
  • 专用微服务
  • 适用于您的 Web 应用的 HTTP 中间件或反向代理
  • 预封装的 Web 应用

创建公共服务

在 Cloud Run 上创建公共服务需要满足以下条件:

  • 通过公共互联网访问服务
  • 供公众使用的网址

如需将服务设为公开,请在部署部署之后的任何时间将您的服务设置为允许未经身份验证的(公共)访问。

服务网址

Cloud Run 会为所有服务分配基于哈希的非确定性网址。如果服务名称长度允许,Cloud Run 还会为服务分配一个确定性网址

您可以停用这些默认 run.app 网址

您可以通过在 Google Cloud 控制台中点击服务名称,或在 gcloud CLI 中运行以下命令来检索服务的网址:

gcloud run services describe SERVICE --format 'value(status.url)'

确定性网址在显示时优先显示。

确定性网址

借助确定性网址,您可以在创建服务之前预测服务网址,这对于服务间通信非常有用。

确定性网址仅适用于 DNS 段长度不超过 63 个字符的情况。DNS 段包含服务名称、项目编号以及任何流量标记。

Cloud Run 服务的确定性网址格式如下:

https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app

其中:

  • TAG 是您请求的修订版本的可选流量标记
  • PROJECT_NUMBER 是 Google Cloud 项目编号
  • SERVICE_NAME 是 Cloud Run 服务的名称。
  • REGION 是区域的名称,例如 us-central1

非确定性网址

非确定性网址没有确定性格式,这意味着由于该网址的第二个字段是随机哈希,因此您无法在部署服务之前预测完整网址。但是,该网址在部署服务后会保持稳定。

Cloud Run 服务的非确定性网址格式为 https://[TAG---]SERVICE_IDENTIFIER.run.app,其中 TAG 是指您请求的修订版本的可选流量标记SERVICE_IDENTIFIER 是 Cloud Run 服务的稳定唯一标识符。请勿解析 SERVICE_IDENTIFIER,因为它没有固定格式,并且 SERVICE_IDENTIFIER 生成的逻辑可能会发生变化。

从 HTTP 到 HTTPS 的重定向

Cloud Run 会将所有 HTTP 请求重定向到 HTTPS,但会在 TLS 进入您的 Web 服务之前终止它。如果您的服务生成的 Web 资源引用了包含不安全网址 (http://) 的其他 Web 资源,则您的网页可能会出现混合的内容警告或错误。对所有引用 Web URI 使用 https 协议或考虑 HTTP 请求中的代理指令,例如 X-Forwarded-Proto HTTP 标头。

HTTP 和 HTTP/2

默认情况下,当 HTTP/2 请求被发送到容器时,Cloud Run 会将这些请求降级为 HTTP/1。如果要明确将服务设置为使用 HTTP/2 端到端,请参阅使用 HTTP/2

创建专用服务

如需在 Cloud Run 上创建专用服务,您需要使用 IAM 调用方权限来限制对该服务的访问。

您还可以使用应用级授权和身份验证机制(例如使用 Identity Platform)限制对服务的访问权限。

测试专用服务

测试专用服务的最简单方法是使用 Google Cloud CLI 中的 Cloud Run 代理。这会将专用服务代理到 http://localhost:8080(或使用 --port 指定的端口),并向服务提供活跃账号的令牌或您指定的其他令牌。这使您可以使用网络浏览器或 curl 等工具。这是在浏览器中对网站或 API 进行非公开测试的推荐方法。

您可以在 Linux、macOS、WSL(首选)cygwin 环境中使用下面一行命令,在本地通过代理连接服务:

gcloud run services proxy SERVICE --project PROJECT-ID

您还可以使用 curl 等工具在 Authorization 标头中传递身份验证令牌,从而在不使用代理的情况下测试专用服务:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

专用服务到服务

Cloud Run 服务可以使用服务到服务身份验证来调用其他 Cloud Run 服务。

调用专用服务的示例代码

如需查看演示如何获取 ID 令牌并向专用服务发出 HTTP 请求的代码示例,请参阅对服务到服务进行身份验证主题。

使用中间件增强您的服务

HTTPS 代理可以分流 HTTP 服务中的常见功能,例如缓存、请求验证或授权。对于微服务,许多 HTTP 代理都是 API Gateway 解决方案或 Istio 等服务网格的一部分。

可用于增强 Cloud Run 服务的 Google Cloud 产品包括:

使用 HTTPS 请求调用函数

默认情况下,在 Cloud Run 中创建的所有函数都有一个 run.app HTTPS 网址,可用于触发函数。使用 Eventarc 触发器创建的函数也有一个 HTTPS 网址,除非您选择使用停用 run.app 网址功能