Rol*_*lie 3 google-cloud-platform google-cloud-run
我有一个服务侦听“https://myapp.a.run.app/dosomething”,但我想利用 Cloud Run 的可扩展性功能,因此在“dosomething”的控制器中,我向“发送了 10 个请求” https://myapp.a.run.app/smalltask'; 我的应用程序配置为允许每个实例只处理一个请求,我希望有 10 个实例启动,所有实例都执行它们的小任务,然后返回(都在超时期限内)。
但我不知道如何正确验证请求,所以这 10 个请求都导致 403。对于 Cloud Run 服务,我会在初始请求中手动传递不记名令牌,但我希望在某个时候添加一些 api 代理。但是没有上述 API 代理,发送请求以使其被接受的正确方法是什么?该应用程序以有权访问端点的用户身份运行。
验证服务到服务
如果您的架构使用多个服务,这些服务可能需要相互通信。
您可以使用同步或异步服务到服务通信:
对于异步通信,使用
用于同步通信
一项服务使用其端点 URL 通过 HTTP 调用另一项服务。在此用例中,最好确保每个服务只能向特定服务发出请求。例如,如果您有一个登录服务,它应该能够访问 user-profiles 服务,但它可能不应该能够访问搜索服务。
首先,您需要配置接收服务以接受来自调用服务的请求:
roles/run.invoker) 角色授予接收服务上的调用服务身份。默认情况下,此标识为PROJECT_NUMBER-compute@developer.gserviceaccount.com。在调用服务中,您需要:
创建一个 Google 签名的 OAuth ID 令牌,并将受众 ( aud) 设置为接收服务的 URL。此值必须包含架构前缀 (http://或https://),并且该aud值当前不支持自定义域。
在Authorization: Bearer ID_TOKEN标头中包含 ID 令牌。当容器在 Cloud Run(完全托管)上运行时,您可以从元数据服务器获取此令牌。如果应用在 GCP 之外运行,您可以从服务帐号密钥文件生成 ID 令牌。
有关 Node/Python/Go/Java 等中的完整指南和示例,请参阅:验证服务到服务
| 归档时间: |
|
| 查看次数: |
827 次 |
| 最近记录: |