google-app-engine - 来自 JSON 的 gcloud auth activate-service-account 设置当前项目
问题描述
我创建了一个服务帐户并返回了一个 JSON 格式的凭据文件,如下所示。
{
"type": "service_account",
"project_id": "myproject",
"private_key_id": "db0cd27ba7d2acad610b854c04f0aa8ad67ad5fc",
"private_key": "REDACTED",
"client_email": "gitlab-ci@myproject.iam.gserviceaccount.com",
"client_id": "558691835510594518717",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/gitlab-ci%40myproject.iam.gserviceaccount.com"
}
然后我可以按如下方式激活此服务帐户
# gcloud auth activate-service-account --key-file myproject-5ddb0cd20b85.json
Activated service account credentials for: [gitlab-ci@myproject.iam.gserviceaccount.com]
由于 JSON 文件包含project_id
,我希望在活动配置中设置它,但事实并非如此。
# gcloud config configurations list
NAME IS_ACTIVE ACCOUNT PROJECT DEFAULT_ZONE DEFAULT_REGION
default True gitlab-ci@myproject.iam.gserviceaccount.com
激活服务帐户时,是否有某种方法可以从 JSON 文件设置项目?
解决方案
服务帐户 JSON 文件中的project_id
不应自动设置为默认项目。
具有此功能取决于用例。有些 API 调用是通过使用服务帐户中的 project_id 完成的,有些使用当前设置的默认项目,因此不适合概括这一点。
作为一种解决方法,我制作了一个 bash 脚本来实现您正在寻找的内容:
gcloud config set project $(cat 'key.json' | jq '.project_id' | sed -e 's/^"//' -e 's/"$//')
推荐阅读
- nginx - 如何强制 NGINX 使用备份上游,反之亦然?
- chat - 在实施 show Conversations 时反应原生freshchat加载问题
- regression - XGBoost 回归 RMSE 个体预测
- c# - C# 中的引用 - 运行时缺少或不匹配引用的示例是什么
- python - 向 Keras 密集连接网络添加简单的硬约束
- java - 如何使用简单循环验证 Java 中的 OTP?
- jenkins - 即使量角器测试用例失败,如何防止詹金斯管道通过并继续构建
- javascript - SyntaxError: 不能在模块外使用 import 语句
- azure - Camel-Azure BlobStreamAndLength IllegalArgumentException:不支持的 blob 类型:org.apache.camel.component.file.remote.SftpRemoteFileJCraft
- r - 在传单 R 中创建最小网格