首页 > 解决方案 > Rest API Google Cloud - 创建/编辑/列出 API 密钥

问题描述

我正在尝试创建一个 API 来从 VM 实例内部管理 API 密钥,因此我正在寻找一种编程和/或使用 Google REST APIS 方式来创建、删除和列出 Google Cloud API 管理凭据,尤其是 API 密钥。

使用 Google Cloud SDK,您可以使用以下命令(“gcloud alpha services api-keys”文档)创建 API 密钥:

$ gcloud alpha services api-keys create --display-name="test name"

在仔细搜索了 Google 的 Cloud文档后,我没有找到一种编程方式(示例 1),也没有使用 cURL(示例 2)来调用 Google API 来管理 API 密钥。

以编程方式创建存储桶的示例 1:

from google.cloud import storage
def create_bucket_class_location(bucket_name):
    """Create a new bucket in specific location with storage class"""
    # bucket_name = "your-new-bucket-name"

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    bucket.storage_class = "COLDLINE"
    new_bucket = storage_client.create_bucket(bucket, location="us")

    print(
        "Created bucket {} in {} with storage class {}".format(
            new_bucket.name, new_bucket.location, new_bucket.storage_class
        )
    )
    return new_bucket

使用 REST API 创建存储桶的示例 2:

curl -X POST --data-binary @create-bucket.json \
 -H "Authorization: Bearer OAUTH2_TOKEN" \
 -H "Content-Type: application/json" \
 "https://storage.googleapis.com/storage/v1/b?project=PROJECT_ID"

标签: pythongoogle-cloud-platformgoogle-api

解决方案


AFAIK,API-KEYS REST 文档尚未发布。

免责声明:alpha状态 API 可能会发生变化。您的代码将来可能会中断。

我建议创建一个新的 Google Cloud 项目来进行测试。

以下示例适用于 Windows。Linux 和 macOS 的概念相同。

我们需要几个变量设置:

# Your Project ID
set GCP_PROJECT=my-project-123456

# Google OAuth Access Token
# Fancy DOS batch stuff to fetch a token
call gcloud auth print-access-token > token
set /p GCP_TOKEN=<token
del token

示例 #1:创建 API KEY:

set URL=https://apikeys.googleapis.com/v2alpha1/projects/%GCP_PROJECT%/keys?alt=json

curl -X POST %URL% ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer %GCP_TOKEN%" ^
-d "{\"displayName\": \"test key\", \"restrictions\": {}}"

示例 #2 - 列出 API 密钥:

curl https://apikeys.googleapis.com/v2alpha1/projects/%GCP_PROJECT%/keys?alt=json ^
-H "Accept: application/json" ^
-H "Authorization: Bearer %GCP_TOKEN%"

示例 #3 - 删除和 API KEY

注意:您将需要 KEY 名称。使用列表示例。name使用列表 json键的最后一部分。

set URL=https://apikeys.googleapis.com/v2alpha1/projects/%GCP_PROJECT%/keys

set KEY=2be9ee20-955c-4405-ac0c-e9f8ae1a3839

curl -X DELETE %URL%/%KEY% ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer %GCP_TOKEN%"

补充说明:

有一个v2beta1API。我没有用这个版本测试过。

示例端点:

https://apikeys.googleapis.com/v2beta1/projects/development-219304/keys

推荐阅读