如何使用服务帐户连接到Cloud SQL实例?

时间:2017-08-18 23:07:29

标签: python google-cloud-platform google-cloud-sql

这似乎是一个之前已经回答的问题,但我没有任何其他答案的运气,所以我开了一个新问题。

我正在使用python脚本创建/配置数据库并使用cloud_sql_proxy连接到它。如果我没有为cloud_sql_proxy提供服务帐户凭据,那么该脚本运行得很漂亮,但如果我这样做,那么我得到这个:

2017/08/18 15:34:12 using credential file for authentication; email=test-acc@project.iam.gserviceaccount.com
2017/08/18 15:34:12 Listening on 127.0.0.1:3306 for project:zone:instance
2017/08/18 15:34:12 Ready for new connections
2017/08/18 15:34:12 New connection for "project:zone:instance"
2017/08/18 15:34:13 couldn't connect to "project:zone:instance":
ensure that the account has access to "project:zone:instance"
(and make sure there's no typo in that name).
Error during createEphemeral for project:zone:instance:
googleapi: Error 403: The client is not authorized to make this request., notAuthorized

这不是INSTANCE_CONNECTION_NAME问题,因为我在没有服务帐户的情况下进行身份验证时工作正常:

2017/08/18 15:38:32 Listening on 127.0.0.1:3306 for project:zone:instance
2017/08/18 15:38:32 Ready for new connections
2017/08/18 15:38:32 New connection for "project:zone:instance"
Connection established.

我尝试了很多不同类型的服务帐户角色:SQLclient + SQLAdmin,SQLclient + SQLAdmin + ProjectEditor等等。

有什么想法吗?我很难过。

1 个答案:

答案 0 :(得分:0)

我发现了问题。我最初没有此项目的IAM管理员权限。在此获得管理员权限后,我能够将服务帐户添加到IAM页面。这解决了这个问题,虽然我仍然得到一个有趣的400错误抱怨我的JWT签名无效。

更新:

我发现我的凭据文件密码是我为同一服务帐户创建的第二个凭据文件(您可以为服务帐户创建多个密钥)。在更新秘密以使用正确的密钥后,我能够使我的部署工作。