我有一个服务正在监听“https://myapp.a.run.app/dosomething”,但我想利用 Cloud Run 的可扩展性功能,因此在“dosomething”的控制器中,我向“ https://myapp.a.run.app/smalltask';当我的应用程序配置为只允许每个实例处理一个请求时,我预计 10 个实例会启动,全部执行其小任务,然后返回(全部在超时期限内)。
但我不知道如何正确验证该请求,因此这 10 个请求都会导致 403。对于 Cloud Run 服务,我在初始请求中手动传递不记名令牌,但我希望在某个时候添加一些 api 代理。但是如果没有所说的 API 代理,发送请求以使其被接受的正确方法是什么?该应用程序以有权访问端点的用户身份运行。
验证服务到服务
如果您的架构使用多个服务,这些服务可能需要相互通信。
您可以使用同步或异步服务到服务通信:
对于异步通信,使用
-
云任务用于一对一异步通信
-
发布/订阅一对多异步通信
-
云调度器用于定期安排的异步通信。
-
云工作流程用于编排服务。
用于同步通信
一项服务使用其端点 URL 通过 HTTP 调用另一项服务。在此用例中,最好确保每个服务只能向特定服务发出请求。例如,如果您有登录服务,它应该能够访问用户配置文件服务,但它可能不应该能够访问搜索服务。
首先,您需要配置接收服务接受来自调用服务的请求:
- 授予 Cloud Run Invoker (
roles/run.invoker
) 角色到接收服务上的调用服务标识。默认情况下,此身份是[email protected]
.
在呼叫服务中,您需要:
-
使用受众创建 Google 签名的 OAuth ID 令牌 (aud
) 设置为接收服务的 URL。该值必须包含架构前缀 (http://
or https://
)和自定义域目前不支持aud
value.
-
将 ID 令牌包含在Authorization: Bearer ID_TOKEN
标头。当容器在 Cloud Run(完全托管)上运行时,您可以从元数据服务器获取此令牌。如果应用程序在 Google Cloud 外部运行,您可以从服务帐号密钥文件生成 ID 令牌。
有关 Node/Python/Go/Java 等的完整指南和示例,请参阅:验证服务到服务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)