繁体   English   中英

我可以使用 GCP VM (xxx-compute@developer.gserviceaccount.com) 的服务帐户而不是 SA json 文件来使用 python 进行 api 调用吗?

[英]Can I use the service account of a GCP VM (xxx-compute@developer.gserviceaccount.com) instead of SA json file to make api calls using python?

目前,我正在使用一些 xxxx 服务帐户凭据 json 文件来制作 REST API 调用

from logging import exception
import requests
import ast
import json
import re
import sys
import subprocess
import os
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
from google.oauth2 import service_account
from datetime import datetime
from datetime import timedelta

main_list = []

# Get the credentials from service account
credentials = service_account.Credentials.from_service_account_file("path to the json file")
service = discovery.build('cloudresourcemanager', 'v1', credentials=credentials)

我不想再使用这个 json 文件,而是想使用 Compute Engine 服务帐户 (xxx-compute@developer.gserviceaccount.com) 来调用 API,有人能告诉我我必须在 python 中做些什么改变,以便它使用VM的服务帐户??

我鼓励您使用Application Default Credentials (ADC)

请参阅此 Python 示例

ADC 意味着无论您在本地还是在 Google Cloud 上运行,您的代码都不会改变。

当您在 Google Cloud 上测试您的代码时,您可以export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/key.json并且 ADC 将使用导出的凭据。

当您将代码部署到 Google Cloud 时,ADC 会从 Google 的元数据服务获取凭据(用于运行代码的资源)。

例如,当您在 Compute Engine 上运行 ADC 代码时,ADC 将获取实例的 (.) Service Account。

您应该尝试始终使用实例|角色特定的服务帐户,但默认的 Compute Engine 帐户也是服务帐户并且可以使用。

请注意,您需要确保使用的任何服务帐户都具有正确的 IAM 权限来访问其他服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM