Google Cloud Run 内部服务之间的通信

Mar*_*nto 2 google-cloud-platform google-cloud-run

我有 2 个云运行服务:

这个想法是calculator-api公开的,它将向 提出请求add-apiadd-api由于某种原因,当ingress 为 时,我收到 403 internal,但如果我将 ingress 更改为 to Allow all traffic,则它可以正常工作。

我使用以下代码正确获取 IdToken,然后将令牌注入 header 中Authorization: Bearer IdToken。我的接收者拥有角色add-api许可。calculator-apiCloud Run Invoker

GET request "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=https://add-api.a.run.app"

Header: {"Metadata-Flavor", "Google"}
Run Code Online (Sandbox Code Playgroud)

因此,我认为问题不在于身份验证,而在于入口设置为 时的某种网络限制internal

gui*_*ere 7

您需要在与计算器 api 服务相同的区域中创建一个无服务器 VPC 连接器,并将其添加到您的计算器 api 服务中,并将出口值设置为all

目前的限制是:这两个服务必须位于同一个项目中(或者您需要执行 VPC 对等来实现此目的)