在不使用环境变量的情况下验证 Google Cloud vision(通过代码设置凭据)
Authenticate Google Cloud vision without using environment variables (set credentials by code)
我正在尝试从 AWS lambda 函数连接到 Google Cloud Vision,唯一的身份验证方法似乎是通过设置某个环境变量,是否有使用代码进行身份验证的方法(我是计划将凭证详细信息存储在 AWS Secrets Manager 中并将它们传递给 Python 中的 Google Vision 客户端)。
vision.ImageAnnotatorClient 的构造函数将 Credentials 作为第一个参数,但令人沮丧的是,我无法为一组服务帐户凭据构造这样一个对象!
希望有人能帮忙!
编辑
在这个 link 中,似乎 Python 以外的语言可以帮助解析凭据,但 Python 示例没有!
https://cloud.google.com/docs/authentication/production#auth-cloud-explicit-python
不容易找到:(
这是执行此操作的代码:
service_account_info_string = R"""{
"type": "service_account",
"project_id": "",
"private_key_id": "",
"private_key": "-----BEGIN PRIVATE KEY-----\n.......\n-----END PRIVATE KEY-----\n",
"client_email": "....@.....iam.gserviceaccount.com",
"client_id": "545................45648",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/....%40....iam.gserviceaccount.com"
}
"""
service_account_info_json = json.loads(service_account_info_string)
service_account_creds = creds.from_service_account_info(service_account_info_json)
client = vision.ImageAnnotatorClient(credentials=service_account_creds)
您可以将您的凭据放入 service_account.json
文件并执行:
from google.cloud import vision
client = vision.Client.from_service_account_json('service_account.json')
我遇到了类似的问题,并通过结合其他答案解决了这个问题。
您需要使用 google.oauth2
中的 service_account
和 credentials.json
文件的完整路径创建一个 credentials
对象。
然后在vision.ImageAnnotatorClient
中使用这个credentials
对象。
from google.cloud import vision
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file('PATH/TO/FILE.json')
client = vision.ImageAnnotatorClient(credentials=credentials)
我正在尝试从 AWS lambda 函数连接到 Google Cloud Vision,唯一的身份验证方法似乎是通过设置某个环境变量,是否有使用代码进行身份验证的方法(我是计划将凭证详细信息存储在 AWS Secrets Manager 中并将它们传递给 Python 中的 Google Vision 客户端)。
vision.ImageAnnotatorClient 的构造函数将 Credentials 作为第一个参数,但令人沮丧的是,我无法为一组服务帐户凭据构造这样一个对象!
希望有人能帮忙!
编辑 在这个 link 中,似乎 Python 以外的语言可以帮助解析凭据,但 Python 示例没有!
https://cloud.google.com/docs/authentication/production#auth-cloud-explicit-python
不容易找到:( 这是执行此操作的代码:
service_account_info_string = R"""{
"type": "service_account",
"project_id": "",
"private_key_id": "",
"private_key": "-----BEGIN PRIVATE KEY-----\n.......\n-----END PRIVATE KEY-----\n",
"client_email": "....@.....iam.gserviceaccount.com",
"client_id": "545................45648",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/....%40....iam.gserviceaccount.com"
}
"""
service_account_info_json = json.loads(service_account_info_string)
service_account_creds = creds.from_service_account_info(service_account_info_json)
client = vision.ImageAnnotatorClient(credentials=service_account_creds)
您可以将您的凭据放入 service_account.json
文件并执行:
from google.cloud import vision
client = vision.Client.from_service_account_json('service_account.json')
我遇到了类似的问题,并通过结合其他答案解决了这个问题。
您需要使用 google.oauth2
中的 service_account
和 credentials.json
文件的完整路径创建一个 credentials
对象。
然后在vision.ImageAnnotatorClient
中使用这个credentials
对象。
from google.cloud import vision
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file('PATH/TO/FILE.json')
client = vision.ImageAnnotatorClient(credentials=credentials)