如何使用 Python 创建/管理 GCP API 密钥
Posted
技术标签:
【中文标题】如何使用 Python 创建/管理 GCP API 密钥【英文标题】:How do I create/manage GCP API keys using Python 【发布时间】:2020-10-08 14:38:49 【问题描述】:我正在尝试使用 Python 等客户端库访问 Google Cloud API 服务,但是我无法从文档 here 中找到任何内容。文档真的很难找到。请帮忙。
我需要使用客户端库为可以使用 API 密钥访问 API 网关的客户创建 API 密钥。
【问题讨论】:
【参考方案1】:根据official documentation,如果您使用 API 密钥进行身份验证,则必须首先为您的服务启用 API 密钥支持,然后才能识别向您的 API 发送请求的服务,您使用服务帐户。
话虽如此,您可以使用 Cloud Console、gcloud 工具、serviceAccounts.keys.create()
方法create a service account key,文档中包含以下示例,以使用 Python 创建服务帐户密钥。
import os
from google.oauth2 import service_account
import googleapiclient.discovery
def create_key(service_account_email):
"""Creates a key for a service account."""
credentials = service_account.Credentials.from_service_account_file(
filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],
scopes=['https://www.googleapis.com/auth/cloud-platform'])
service = googleapiclient.discovery.build(
'iam', 'v1', credentials=credentials)
key = service.projects().serviceAccounts().keys().create(
name='projects/-/serviceAccounts/' + service_account_email, body=
).execute()
print('Created key: ' + key['name'])
你可以在link找到另一个例子
【讨论】:
做得很好,谢谢!【参考方案2】:目前没有公共 API 可用于以编程方式创建 API 密钥。一个月前我看到了一个测试版,但现在它不再可用了。
我最近观看了一个使用 Googler 提供的新 API 的视频,但没有公开记录。
因此,您可以使用此 API 调用(非文档,如有更改,恕不另行通知。使用风险自负)
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -X POST https://apikeys.googleapis.com/v1/projects/PROJECT_ID/apiKeys
【讨论】:
【参考方案3】:如果您想使用 Google 的 API,最好创建服务帐户并在 Python 代码中使用它。 https://cloud.google.com/docs/authentication/production?hl=en
如果您已经创建了服务并且希望使用 API Key 公开 API,那么您可以按照您提到的链接中的说明进行操作。
【讨论】:
我想使用客户端库创建 API 密钥 没有以编程方式创建 API 密钥的选项。您需要使用云控制台。以上是关于如何使用 Python 创建/管理 GCP API 密钥的主要内容,如果未能解决你的问题,请参考以下文章
使用GCP API密钥限制对特定GCP App Engine服务的访问?
如何使用 API 或 Terraform 模板在 GCP 中创建 StackDriver 工作区