Google cloud platform 我的云运行服务如何调用其他云运行服务?
我有一个监听服务'https://myapp.a.run.app/dosomething,但我想利用Cloud Run的可伸缩性功能,因此在“dosomething”的控制器中,我向“dosomething”发送10个请求https://myapp.a.run.app/smalltask'; 由于我的应用程序配置为每个实例只允许服务一个请求,我预计10个实例将启动,所有实例都执行smalltask并返回(所有实例都在超时时间内)Google cloud platform 我的云运行服务如何调用其他云运行服务?,google-cloud-platform,google-cloud-run,Google Cloud Platform,Google Cloud Run,我有一个监听服务'https://myapp.a.run.app/dosomething,但我想利用Cloud Run的可伸缩性功能,因此在“dosomething”的控制器中,我向“dosomething”发送10个请求https://myapp.a.run.app/smalltask'; 由于我的应用程序配置为每个实例只允许服务一个请求,我预计10个实例将启动,所有实例都执行smalltask并返回(所有实例都在超时时间内) 但我不知道如何正确验证请求,因此这10个请求都会导致403个请求。
但我不知道如何正确验证请求,因此这10个请求都会导致403个请求。对于云运行的服务,我在初始请求中手动传递一个承载令牌,尽管我希望在某个时候添加一些api代理。但是如果没有API代理,发送请求以使其被接受的正确方式是什么?应用程序正在以具有访问终结点权限的用户身份运行。验证服务对服务的身份。 如果您的体系结构使用多个服务,那么这些服务可能需要相互通信 您可以使用同步或异步服务对服务通信: 对于异步通信,请使用
- 用于一对一异步通信
- 一对多异步通信
- 用于定时异步通信
- 用于编排服务
角色/Run.Invoker
)角色授予接收服务上的调用服务标识。默认情况下,此标识为PROJECT\u编号-compute@developer.gserviceaccount.com
aud
)设置为接收服务的URL。此值必须包含架构前缀(http://
或https://
),并且aud
值当前不支持自定义域
授权:承载ID\u令牌
头中。当容器在云上运行(完全管理)时,您可以从元数据服务器获取此令牌。如果应用程序在Google Cloud之外运行,则可以从服务帐户密钥文件生成ID令牌
有关Node/Python/Go/Java和其他语言的完整指南和示例,请参阅:感谢您的快速回答!尽管如此,即使遵循了指南(尝试了身份验证文档方法和教程方法),我在服务日志中也看到了401。与我确认的服务关联的标识本身具有调用权限;这可能是服务无法调用自身的未记录限制吗?请确保
令牌\u请求\u url=metadata\u服务器\u令牌\u url+接收\u服务\u url
通常人们会忘记添加后者。我遇到的问题是,在我的uri前面加上“http”而不是“https”。FWIW,python教程更新为使用库函数专门获取元数据令牌,因此google.oauth2.id\u令牌.fetch\u id\u令牌(auth\u req,target\u观众)
而不是直接调用http://metadata/computeMetadata/...
。我认为图书馆的使用更漂亮。要确认,基本上唯一的选择是在提出实际请求之前请求一个令牌?