我已经花了几个小时处理这个问题,但似乎我无法激活服务帐户以在本地开发App Engine项目(如果我部署teh项目它很好地验证,因为凭据作为env变量注入)。
问题
在服务帐户下,我生成了一个新的JSON密钥 - > key.json
gcloud auth activate-service-account --key file = key.json
{
"type": "service_account",
<br> "project_id": "[project id]",
<br> "private_key_id": "[private_key_id]",
<br> "private_key": "[private_key]",
<br> "client_email": "[name]",
<br> "client_id": "[clien id]",
<br> "auth_uri": "https://accounts.google.com/o/oauth2/auth",
<br> "token_uri": "https://accounts.google.com/o/oauth2/token",
<br> "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
<br> "client_x509_cert_url":
"https://www.googleapis.com/robot/v1/metadata/x509/[client_email]"
<br> }
我收到错误消息错误:(gcloud.auth.activate-service-account)无法激活给定的服务帐户。请确保提供的密钥文件有效。
在尝试了所有内容后,我发现在文档中,服务帐户密钥确实具有不同的结构。 https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys 我不知道为什么下载的密钥结构不好。
有人遇到过这个问题吗?任何解决方案?
答案 0 :(得分:4)
我没有找到任何关于此的好文档,但您肯定希望第一种类型的文件并通过云控制台创建它应该可行。我相信它被引用为Google凭据文件。下载的JSON文件应如下所示:
{
"type": "service_account",
"project_id": "project-id",
"private_key_id": "some_number",
"private_key": "-----BEGIN PRIVATE KEY-----\n....
=\n-----END PRIVATE KEY-----\n",
"client_email": "<api-name>api@project-id.iam.gserviceaccount.com",
"client_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/...<api-name>api%40project-id.iam.gserviceaccount.com"
}
您发布的second link也会创建一个服务帐户密钥和一个Google凭据文件,但这可能比您想要的更多(Google凭据文件是在privateKeyData
字段下编码的。
希望这能解释文件;祝你好运!我唯一的建议就是你拼错了命令? 它应该是:
gcloud auth activate-service-account --key-file=key.json
而你输入了
gcloud auth activate-service-account --key file=key.json
即-key之后的空格。如果你想出来,请告诉我们!