google-cloud-platform - GCP:如何获取计算引擎访问令牌?
问题描述
我想获取计算引擎的访问令牌。通过使用此访问令牌,我想调用 REST api。进一步的 Rest api 将使用 python 2.0 HTTP 库调用。(并非所有谷歌库都可用,因此考虑 REST api)
您能否提供获取计算引擎访问令牌的方法?以下代码可以作为起点,但是从这里开始如何获取访问令牌尚不清楚:
from google.auth import compute_engine
credentials = compute_engine.Credentials()
请提出不同的方法...在此先感谢。
解决方案
每个 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 默认服务帐号。
推荐阅读
- maven - 如何在 Maven 构建模板中使用 VSTS 调用特定于环境的 app.properties
- javascript - Edit D3 SVG's links position in a "radial" Chart
- r - R:更改单元格中的值,如果其上方和下方的值相互匹配,则不使用 for 循环
- python - 以不同的顺序对多列上的结构化 Numpy 数组进行排序
- sas - SAS中最大统计量的动态计算
- activemq-artemis - ActiveMQ Artemis 在启动时阻塞
- sql - 如何选择可能有前导零的非整数(varchars)?
- python - 获取调用 python 脚本的 bash 脚本的位置
- ms-access - 查询未在用户输入 MS Access 上返回行
- javascript - 使用时刻时区 js 将日期字符串转换为带有时区的日期