gpt4 book ai didi

python - 谷歌云运行 : Calling from outside GCP

转载 作者:行者123 更新时间:2023-12-05 00:46:29 24 4
gpt4 key购买 nike

我正在尝试访问安全的云运行服务。如果我在我的机器上尝试使用 SDK,它可以正常工作:

curl --header "Authorization: Bearer $(gcloud auth print-identity-token)"

但是,我无法使用 Python API 使用相同的服务帐户使其工作,我尝试使用 google-auth 获取访问 token ,但这给了我 401 身份验证错误。这是我用来尝试获取 token 的代码:

import google.auth
import google.auth.transport.requests

scopes = ['https://www.googleapis.com/auth/cloud-platform']

creds, projects = google.auth.default(scopes=scopes)
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)

# then using creds.token

查看文档:https://cloud.google.com/run/docs/authenticating/service-to-service#calling_from_outside_gcp它说要遵循此处的示例代码:https://cloud.google.com/iap/docs/authentication-howto#iap_make_request-python我似乎无法按照指南所说的启用 IAP,但似乎 IAP 仅适用于应用引擎而不适用于云运行?

有人对这个有什么建议吗?

谢谢

最佳答案

好吧,似乎有一个 IDTokenCredentials 类适用于此,因为它使用 Open ID Connect ID token 而不是 OAuth 2.0 访问 token :

https://google-auth.readthedocs.io/en/latest/reference/google.oauth2.service_account.html

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession

service_url = 'example.com'
key_file = 'key.json'

credentials = service_account.IDTokenCredentials.from_service_account_file(
key_file, target_audience=service_url)
authed_session = AuthorizedSession(credentials)
response = authed_session.get(service_url)

这很令人困惑,因为我在文档中没有看到它,这让我想到了关于 IAP 的其他内容,我认为这些内容不适用于 Cloud Run。

关于python - 谷歌云运行 : Calling from outside GCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60218759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com