使用gcloud CLI创建Cloud Secret Manager密钥时遇项目ID格式错误
解决Google Cloud Secret Manager CLI创建密钥的INVALID_ARGUMENT错误
问题重现
执行以下命令创建Secret Manager密钥时:
echo -n "my-secret-value" | gcloud --project=[MY_PROJECT_ID] secrets create MY_SECRET --data-file=-
或已设置全局项目后:
gcloud config set project [MY_PROJECT_ID] echo -n "my-secret-value" | gcloud secrets create MY_SECRET --data-file=-
收到错误:
ERROR: (gcloud.secrets.create) INVALID_ARGUMENT: The provided Project ID [projects/[MY_PROJECT_ID]/locations/[MY_REGION]] does not match the expected format [projects/*]
解决方案
1. 显式指定--location参数
在创建命令中添加区域参数,明确指定密钥存储的区域:
# 方式1:通过--project指定项目 echo -n "my-secret-value" | gcloud --project=[MY_PROJECT_ID] secrets create MY_SECRET --data-file=- --location=[MY_REGION] # 方式2:使用全局项目配置 gcloud config set project [MY_PROJECT_ID] echo -n "my-secret-value" | gcloud secrets create MY_SECRET --data-file=- --location=[MY_REGION]
2. 检查并重置gcloud配置
执行以下命令查看当前gcloud配置,确认project和location项是否正确:
gcloud config list
- 如果
project配置项是类似projects/xxx/locations/xxx的完整路径,执行以下命令重置项目配置:
gcloud config unset project gcloud config set project [MY_PROJECT_ID]
- 如果
location配置异常,也可以重置:
gcloud config unset location
原因分析
错误提示中的项目ID包含了locations/[MY_REGION]后缀,说明gcloud CLI在解析项目参数时,错误地将区域信息拼接进了项目ID中。这通常是由于:
- 未显式指定
--location参数时,CLI使用了错误的默认区域配置 - gcloud全局配置中的
project项被意外设置为包含区域的完整资源路径
额外验证:执行gcloud projects describe [MY_PROJECT_ID] --format="value(projectNumber)"能正常返回项目编号,说明项目ID本身有效,问题出在CLI的参数解析或配置上。
内容的提问来源于stack exchange,提问作者SebastienPattyn
相关产品推荐
相关产品推荐

