如何在 Google Compute Engine 上对 BigQuery 进行身份验证?

Fel*_*ffa 5 python bash curl google-bigquery google-compute-engine

在 Google Compute Engine 实例上进行 Google BigQuery 身份验证的最简单方法是什么?

kom*_*oma 3

首先确保您的实例具有访问 BigQuery 的范围 - 您只能在创建时决定这一点。

在 bash 脚本中,通过调用获取 oauth 令牌:

ACCESSTOKEN=`curl -s "http://metadata/computeMetadata/v1/instance/service-accounts/default/token" -H "X-Google-Metadata-Request: True" | jq ".access_token" | sed 's/"//g'`
echo "retrieved access token $ACCESSTOKEN"
Run Code Online (Sandbox Code Playgroud)

现在假设您想要项目中的数据集列表:

CURL_URL="https://www.googleapis.com/bigquery/v2/projects/YOURPROJECTID/datasets"
CURL_OPTIONS="-s --header 'Content-Type: application/json' --header 'Authorization: OAuth $ACCESSTOKEN' --header 'x-goog-project-id:YOURPROJECTID' --header 'x-goog-api-version:1'"
CURL_COMMAND="curl --request GET $CURL_URL $CURL_OPTIONS"    
CURL_RESPONSE=`eval $CURL_COMMAND`
Run Code Online (Sandbox Code Playgroud)

JSON格式的响应可以在变量CURL_RESPONSE中找到

PS:我现在意识到这个问题被标记为Python,但同样的原则也适用。