正如标题所说,我有一个gcp-sql实例,并希望使用云函数(在Python中(将一个ip添加到它的授权网络列表中。根据https://cloud.google.com/sql/docs/mysql/configure-ip#rest我可以使用这个休息呼叫:
curl -X PATCH
-H "Authorization: Bearer "$(gcloud auth print-access-token)
-H "Content-Type: application/json; charset=utf-8"
-d @request.json
https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
因此,我的想法是使用请求从云函数中进行此调用。但是,我不知道如何在cloud函数中得到gcloud auth print-access-token
的结果。
您可以使用Python的Cloud SQL Admin API客户端库,该库将使用默认服务帐户凭据为您包含此授权令牌。查看客户端库和示例代码页以了解更多信息。
或者,如果您喜欢手动创建请求,可以使用Oauth 2.0令牌。"授权请求"页面提供了有关如何创建这些请求的详细信息。
这里是一个用于发出授权请求的python代码示例(这里是GET版本。使用您想要的动词自定义它(
from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account
import google.auth
base_url = 'https://www.googleapis.com/sql/v1beta4/projects/'
credentials, project_id = google.auth.default(scopes=['https://www.googleapis.com/auth/cloud-platform'])
project_id = 'yourProjectID'
instance_id = 'yourInstanceID'
authed_session = AuthorizedSession(credentials)
response = authed_session.request('GET', f'{base_url}{project_id}/instances/{instance_id}')
print(response.json())