2013-11-20 84 views
0

我試圖使用bq命令行工具將數據從GCS鬥裝載至BigQuery和我收到以下錯誤信息:的BigQuery授權

BigQuery error in load operation: Access Denied: Job mythical-maxim-293:bqjob_r11765e0cd9ceb52b_000001427694f0e1_1: RUN_JOB

我正在使用的服務帳戶(與私鑰)進行驗證。我跟着授予服務帳戶訪問級別以下鏈接:

https://developers.google.com/bigquery/loading-data-into-bigquery https://developers.google.com/bigquery/access-control

服務帳戶的電子郵件被授予WRITE訪問與BigQuery資料集,並讀取與GCS分區的訪問權限。

注意:將服務帳戶電子郵件作爲編寫者添加到項目中,解決了這個問題,但這對我的情況並不可行。我不允許請求項目級寫權限,但BigQuery和GCS(只讀)。

謝謝!

+0

您是否可以複製並粘貼您嘗試執行的確切命令? – vegemite4me

+0

BQ \ --service_account [email protected]account.com \ --service_account_credential_file〜/ .bigquery/identity.xplenty.cred \ --service_account_private_key_file〜/ .bigquery/identity.xplenty.p12 \ - service_account_private_key_password notasecret \ --project_id mythical-maxim-293 \ 加載my_data_set_1.my_table_1 gs://xptest/test.csv –

+0

您是否允許您的服務帳戶讀取存儲桶中的對象?桶讀取權限不一定意味着對象讀取權限。 –

回答

2

爲了運行該作業,必須給該服務帳戶至少讀取該項目的權限。這是因爲在項目中執行任務的人可以執行使項目所有者花錢的事情(例如運行查詢)。

要將服務帳戶添加到項目中,請轉到https://cloud.google.com/console,然後單擊「權限」,然後單擊「添加成員」。

+0

似乎是一種有問題的方法,因爲授予對項目的讀取權限不限於特定的服務(如果我的服務帳戶僅用於BigQuery加載,該怎麼辦?)。我錯過了什麼?我需要一種方法來授予我的服務帳戶BigQuery加載,而不會將其暴露給其他具有讀權限的Google雲服務。 –

+0

哦,還有另一個問題 - 如果我使用其他授權方法(例如OAuth2 Web Flow),它會不同嗎? –

+0

如果您使用OAuth2,則此過程相同,但您可以將OAuth範圍限制爲僅允許訪問BigQuery。 –

0

您必須在數據集上提供WRITE權限。

https://cloud.google.com/bigquery/loading-data-into-bigquery#access

這是不好的,作爲寫權限意味着您已經閱讀權限。但是,對於bigquery而言,READ支付並且Load是免費的。爲了完成免費任務,應該有必要獲得付費服務。

谷歌必須糾正這一點。