如何使用 Google API 客户端创建 Python 代码
How to Create Python Code with Google API Client
我有下面的代码,用于列出特定项目的 Google 云服务帐户。
import os
from googleapiclient import discovery
from gcp import get_key
"""gets all Service Accounts from the Service Account page"""
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = get_key()
service = discovery.build('iam', 'v1')
project_id = 'projects/<google cloud project>'
request = service.projects().serviceAccounts().list(name=project_id)
response = request.execute()
accounts = response['accounts']
for account in accounts:
print(account['email'])
此代码完美运行,并根据需要打印帐户。我想弄清楚的是:
在哪里可以看到如何构造这样的代码?我找到了一个引用了 Python API Client, but I can't seem to figure out how to make the code above from it. I can see the Method 的站点来列出服务帐户,但它仍然没有给我足够的信息。
我应该去其他地方自学吗?非常感谢您提供的任何信息,所以我不会拔掉剩下的头发。
谢谢,埃里克
您可以使用 ipython
安装了 googleapiclient - 像这样:
sudo pip install --upgrade google-api-python-client
您可以转到交互式 python 控制台并执行以下操作:
from googleapiclient import discovery
dir(discovery)
help(discovery)
dir
- 给出对象拥有的所有条目 - 所以:
a = ''
dir(a)
将告诉您可以使用字符串对象做什么。执行 help(a)
将为字符串对象提供帮助。你可以做北斗:
目录(发现)
# 然后例如
帮助(discovery.re)
您可以分步调用您的脚本,查看打印结果,做一些研究,做一些事情 - 做 %history
来打印您的会话,并获得可以作为脚本触发的解决方案。
跟大家分享一下this documentation page,里面有很详细的说明如何搭建一个脚本,比如你分享的那个,每行代码是什么意思。它是从 ML Engine 的文档中提取的,而不是 IAM,但它使用相同的 Python Google API Client Libary,因此只需忽略对 ML 的引用,其余的将很有用给你。
无论如何,这里是您代码的注释版本,以便您更好地理解它:
# Imports for the Client API Libraries and the key management
import os
from googleapiclient import discovery
from gcp import get_key
# Look for an environment variable containing the credentials for Google Cloud Platform
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = get_key()
# Build a Python representation of the REST API
service = discovery.build('iam', 'v1')
# Define the Project ID of your project
project_id = 'projects/<google cloud project>'
"""Until this point, the code is general to any API
From this point on, it is specific to the IAM API"""
# Create the request using the appropriate 'serviceAccounts' API
# You can substitute serviceAccounts by any other available API
request = service.projects().serviceAccounts().list(name=project_id)
# Execute the request that was built in the previous step
response = request.execute()
# Process the data from the response obtained with the request execution
accounts = response['accounts']
for account in accounts:
print(account['email'])
理解代码的第一部分后,最后几行特定于您正在使用的 API,在本例中为 Google IAM API。在此 link 中,您可以找到有关可用方法及其作用的详细信息。
然后,您可以按照您分享的Python API Client Library documentation查看如何调用这些方法。比如你分享的代码中,使用的方法依赖于service
,也就是API的Python表示,然后在最后的link,如 projects()
,然后是 serviceAccounts()
,最后是特定的 list()
方法,它以 request = service.projects().serviceAccounts().list(name=project_id)
.
结束
最后,如果您对其他可用的 API 感兴趣,请参阅 this page 了解更多信息。
我希望我对您的代码所做的评论对您有所帮助,并且共享的文档可以让您更轻松地理解如何编写这样的代码。
我有下面的代码,用于列出特定项目的 Google 云服务帐户。
import os
from googleapiclient import discovery
from gcp import get_key
"""gets all Service Accounts from the Service Account page"""
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = get_key()
service = discovery.build('iam', 'v1')
project_id = 'projects/<google cloud project>'
request = service.projects().serviceAccounts().list(name=project_id)
response = request.execute()
accounts = response['accounts']
for account in accounts:
print(account['email'])
此代码完美运行,并根据需要打印帐户。我想弄清楚的是:
在哪里可以看到如何构造这样的代码?我找到了一个引用了 Python API Client, but I can't seem to figure out how to make the code above from it. I can see the Method 的站点来列出服务帐户,但它仍然没有给我足够的信息。
我应该去其他地方自学吗?非常感谢您提供的任何信息,所以我不会拔掉剩下的头发。
谢谢,埃里克
您可以使用 ipython
安装了 googleapiclient - 像这样:
sudo pip install --upgrade google-api-python-client
您可以转到交互式 python 控制台并执行以下操作:
from googleapiclient import discovery
dir(discovery)
help(discovery)
dir
- 给出对象拥有的所有条目 - 所以:
a = ''
dir(a)
将告诉您可以使用字符串对象做什么。执行 help(a)
将为字符串对象提供帮助。你可以做北斗:
目录(发现)
# 然后例如
帮助(discovery.re)
您可以分步调用您的脚本,查看打印结果,做一些研究,做一些事情 - 做 %history
来打印您的会话,并获得可以作为脚本触发的解决方案。
跟大家分享一下this documentation page,里面有很详细的说明如何搭建一个脚本,比如你分享的那个,每行代码是什么意思。它是从 ML Engine 的文档中提取的,而不是 IAM,但它使用相同的 Python Google API Client Libary,因此只需忽略对 ML 的引用,其余的将很有用给你。
无论如何,这里是您代码的注释版本,以便您更好地理解它:
# Imports for the Client API Libraries and the key management
import os
from googleapiclient import discovery
from gcp import get_key
# Look for an environment variable containing the credentials for Google Cloud Platform
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = get_key()
# Build a Python representation of the REST API
service = discovery.build('iam', 'v1')
# Define the Project ID of your project
project_id = 'projects/<google cloud project>'
"""Until this point, the code is general to any API
From this point on, it is specific to the IAM API"""
# Create the request using the appropriate 'serviceAccounts' API
# You can substitute serviceAccounts by any other available API
request = service.projects().serviceAccounts().list(name=project_id)
# Execute the request that was built in the previous step
response = request.execute()
# Process the data from the response obtained with the request execution
accounts = response['accounts']
for account in accounts:
print(account['email'])
理解代码的第一部分后,最后几行特定于您正在使用的 API,在本例中为 Google IAM API。在此 link 中,您可以找到有关可用方法及其作用的详细信息。
然后,您可以按照您分享的Python API Client Library documentation查看如何调用这些方法。比如你分享的代码中,使用的方法依赖于service
,也就是API的Python表示,然后在最后的link,如 projects()
,然后是 serviceAccounts()
,最后是特定的 list()
方法,它以 request = service.projects().serviceAccounts().list(name=project_id)
.
最后,如果您对其他可用的 API 感兴趣,请参阅 this page 了解更多信息。
我希望我对您的代码所做的评论对您有所帮助,并且共享的文档可以让您更轻松地理解如何编写这样的代码。