0

I'm probably very confused with the API concepts but I'm not understanding how to use REST Google API with Python.

On the API documentation, it said to use HTTP Requests or client libs (in case of Python, libcloud or Google API Python Client Library. I saw examples for some functionalities that work well like, create VMs or attaching disks.

Although, I could not find an example pure REST request, like, if I want to create a scheduled snapshot.

So I have two questions:

  1. How to use libs to authenticate and call a function that the lib doesn't have a built-in method (like schedule snapshots)?

According to documentation, should be a request like this:

https://compute.googleapis.com/compute/v1/projects/{PROJECT_ID}/regions/{REGION_ID}/resourcePolicies

    {
        "name": "name",
        "snapshotSchedulePolicy": {
        "schedule": {
            "dailySchedule": {
            "startTime": "12:00",
            "daysInCycle": "1"
            }
        },
        "retentionPolicy": {
            "maxRetentionDays": "5"
        },
        "snapshotProperties": {
            "guestFlush": "False",
            "labels": {
            "env": "dev",
            "media": "images"
            },
            "storageLocations": ["US"]
        }
    }
  1. Can I use the API, inside a Cloud Functions, without worrying to get a Token?

Someone can help me understand this better?

Thanks in advance

4

1 回答 1

1

这可能会令人困惑,但它在 Google Cloud 上的记录相当完善,我鼓励您在那里阅读以了解更多详细信息。

对于您描述的特定 API 方法:

https://cloud.google.com/compute/docs/reference/rest/beta/resourcePolicies/insert

此页面包括自己调用 API 方法的能力(见页面右侧)。这使用了最优秀的 Google APIs Explorer,您也可以直接访问它:

https://developers.google.com/apis-explorer

并且,深入到 Compute Engine 测试版:

https://cloud.google.com/compute/docs/reference/rest/beta/#rest-resource:-beta.resourcepolicies

另一个有用的(技巧)是发出gcloud带有标志的(任何)命令--log-http。然后,这将包括作为命令基础的 HTTP 方法请求|响应详细信息,这可以帮助您更好地了解正在发生的事情。在你的情况下:

gcloud beta compute resource-policies ... --log-http

Google 提供的库有 2 种类型。较旧的 API 客户端库和较新的 Cloud。看:

https://cloud.google.com/apis/docs/client-libraries-explained

API 客户端库是机器生成的,您应该能够使用这些库访问所有 Google 支持的语言的所有库的所有API 方法。

云客户端库(主要)是手工制作的,这些库通常落后于底层 API。

Compute Engine 没有Cloud客户端库(适用于任何语言;请看图!)。因此,您应该能够使用 Python API 客户端库调用 beta 资源策略。

也就是说,您可能总是用您喜欢的语言手工制作 REST 调用自己,但不鼓励这样做,因为它需要您自己管理身份验证等,这可能具有挑战性

是的,您可以从 Cloud Functions 进行(任何)REST 调用,但如果支持服务需要身份验证,您将始终需要对调用进行身份验证。

于 2020-07-02T17:56:41.057 回答