如何在 GCP 中获取 application_default_credentials.json 文件?

如何在 GCP 中获取 application_default_credentials.json 文件?

我正在本地开发一个应用程序(python),我想列出所有项目及其实例的详细信息。

为了实现这一点,我application_default_credentials.json通过执行gcloud auth application-default login命令生成了文件,通过使用此文件,我可以列出我的所有项目及其实例。但是

  1. 还有其他方法可以生成此application_default_credentials.json文件吗?如果有,您能给我举一个同样的例子吗?
  2. 除了这个文件之外,是否有任何密钥(如 secret_id/secret_token..)来获取所有项目及其资源的详细信息?
  3. 该文件application_default_credentials.json包含 client_id、client_secret 和 refresh_token。是否可以在API's & ServicesGCP 的部分中生成这些密钥?

(我有 3 个项目,每个项目有 3 个实例,我只是想在本地收集所有项目及其实例的详细信息)

答案1

需要指出的是,无法列出所有项目的所有资源。目前只有控制台可以在主页的资源部分中执行此操作。但是,您可以单独列出服务,然后将它们合并。您可以使用 python 并调用REST 请求然后汇总所有结果。例如,您可以调用方法实例列表列出实例或磁盘列表 列出您的磁盘。请记住,这些请求是按区域分组的。

回答您的问题:

1.- 对于用户帐户,您可以检查 OAuth 2.0 Playground。对于服务帐户,可以通过控制台、gcloud 和 REST 完成。检查此链接了解完整示例。通过 REST,您可以使用 POST 请求:

POST https://iam.googleapis.com/v1/projects/PROJECT-ID/serviceAccounts/[email protected]/keys

2.- 一个API 密钥是另一种可能性,但这取决于您调用的端点。请记住,您必须发出单独的请求,您可以尝试将关键参数添加到您的 REST 请求中,例如:

GET https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/instances?key=AAfdf43FE3..fdDgg

3.- 我担心对于现有用户帐户(例如您的电子邮件地址)来说这是不可能的。相反,您可以创建一个新的客户端 ID 并生成其 json 文件。

如果您仅请求使用资源,我个人建议使用服务帐户。

希望以上信息对您有帮助!

相关内容