使用其ID获取Google Cloud Project编号

Dmi*_*ets 2 java google-cloud-platform

我有Google Cloud Service帐户和projectId,想从Java中以编程方式获取projectNumber。

在此处输入图片说明

我怎么才能得到它?

基本上,我拥有服务帐户,并希望使用它为Google Cloud Storage Bucket中的帐户“ project-XXXXXXX@storage-transfer-service.iam.gserviceaccount.com”授予角色“ roles / storage.legacyBucketWriter”。

小智 9

此 gcloud 命令将返回项目编号:

gcloud projects describe $PROJECT_ID --format="value(projectNumber)"
Run Code Online (Sandbox Code Playgroud)

然后,您可以在命令中使用它来授予访问权限,例如:

gcloud projects add-iam-policy-binding $PROJECT_ID  --member=serviceAccount:$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@@storage-transfer-service.iam.gserviceaccount.com --role=roles/storage.legacyBucketWriter
Run Code Online (Sandbox Code Playgroud)


Lee*_*Lee 5

我认为 GCP 没有提供 API 将项目 ID 映射到项目编号。但在你获得项目列表后,他们确实提供了一个项目列表 API。您可以自行映射项目编号。


小智 5

不知道为什么他们不直接公开它,但是您可以执行此操作(假设您当前的配置项目与所需的项目编号相对应):

PROJECT=$(gcloud config get-value project)
gcloud projects list --filter="$PROJECT" --format="value(PROJECT_NUMBER)"
Run Code Online (Sandbox Code Playgroud)

  • 我知道 OP 想要为此提供一个 Java API,但是...如果其他搜索者来这里寻找使用 gcloud 将 project_id 映射到项目编号的方法,这不是最好的方法(不是在 2020 年 10 月)反正)。试试这个:`gcloud 项目描述 $PROJECT_ID --format="value(projectNumber)"` 请参阅文档:https://cloud.google.com/sdk/gcloud/reference/projects/describe (2认同)