在谷歌云运行服务运行时访问服务帐户 ID

时间:2021-02-10 15:58:45

标签: google-cloud-platform google-compute-engine google-cloud-run

有人知道如何在运行时访问运行我的云运行服务的服务帐户的电子邮件地址吗?

在将服务部署到 gcloud 时,我使用特定的服务帐户来运行该服务。 在运行时,我需要此服务帐户的电子邮件/ID,以便使用 IAMCredentialsService 进行 blob 签名。

是否有可能以某种方式获取服务帐户 ID?我手头的 ComputeCredential 对象不提供此信息。现在,我必须设置一个包含服务帐户电子邮件地址的环境变量,我可以在服务运行时使用该地址。

2 个答案:

答案 0 :(得分:3)

在您的云运行容器中,您需要访问此 URL(一个 GET)

http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/email

使用这个标题

Metadata-Flavor: Google

如果您在获取值时遇到困难,请提供您的语言,我会看看是否可以为您提供代码示例。

答案 1 :(得分:0)

在文档 https://cloud.google.com/run/docs/reference/container-contract#metadata-server

中查看更多信息 <块引用>

容器实例元数据服务器

Cloud Run 容器实例公开了一个元数据服务器,您可以使用它来检索有关容器实例的详细信息,例如项目 ID、区域、实例 ID 或服务帐号。它还可用于为运行时服务帐户生成令牌。

您可以使用对 http://metadata.google.internal/ 端点的简单 HTTP 请求(带有 Metadata-Flavor: Google 标头)从元数据服务器访问此数据:不需要客户端库。如需了解详情,请参阅获取元数据。