首页 > 解决方案 > GCP:如何获取计算引擎访问令牌?

问题描述

我想获取计算引擎的访问令牌。通过使用此访问令牌,我想调用 REST api。进一步的 Rest api 将使用 python 2.0 HTTP 库调用。(并非所有谷歌库都可用,因此考虑 REST api)

您能否提供获取计算引擎访问令牌的方法?以下代码可以作为起点,但是从这里开始如何获取访问令牌尚不清楚:

from google.auth import compute_engine
credentials = compute_engine.Credentials() 

请提出不同的方法...在此先感谢。

标签: google-cloud-platformgoogle-api-python-client

解决方案


每个 Compute Engine 实例都将其元数据存储在元数据服务器上。您可以在实例中以编程方式查询此元数据服务器,以获取有关实例的信息,例如服务帐户信息。您可以从 Python 中的元数据服务器请求访问令牌,如下所示:

import requests

METADATA_URL = 'http://metadata.google.internal/computeMetadata/v1/'
METADATA_HEADERS = {'Metadata-Flavor': 'Google'}
SERVICE_ACCOUNT = 'default'


def get_access_token():
    url = '{}instance/service-accounts/{}/token'.format(
        METADATA_URL, SERVICE_ACCOUNT)

    # Request an access token from the metadata server.
    r = requests.get(url, headers=METADATA_HEADERS)
    r.raise_for_status()

    # Extract the access token from the response.
    access_token = r.json()['access_token']

    return access_token

请注意,此示例假定您的实例使用的是Compute Engine 默认服务帐号


推荐阅读