2012-11-06 20 views
8

Ho creato un account di servizio utilizzando la Console API di Google e desidero utilizzare questo account di servizio con lo strumento Google BigQuery CLI (bq).Come si configura lo strumento da riga di comando di Google BigQuery per utilizzare un account di servizio?

Ho utilizzato lo strumento della riga di comando per accedere correttamente al servizio BigQuery utilizzando le mie credenziali OAuth2 valide in ~/.bigquery.v2.token, tuttavia non riesco a trovare alcuna documentazione su come modificare questo file (o altrimenti configurare lo strumento) per utilizzare invece un account di servizio.

Ecco il mio file .bigquery.v2.token corrente

{ 
    "_module": "oauth2client.client", 
    "_class": "OAuth2Credentials", 
    "access_token": "--my-access-token--", 
    "token_uri": "https://accounts.google.com/o/oauth2/token", 
    "invalid": false, 
    "client_id": "--my-client-id--.apps.googleusercontent.com", 
    "id_token": null, 
    "client_secret": "--my-client-secret--", 
    "token_expiry": "2012-11-06T15:57:12Z", 
    "refresh_token": "--my-refresh-token--", 
    "user_agent": "bq/2.0" 
} 

mio altro file: ~/.bigqueryrc generalmente assomiglia a questo:

project_id = --my-project-id-- 
credential_file = ~/.bigquery.v2.token 

Ho provato a installare il paramater credential_file al file di chiave privata .p12 per il mio account di servizio ma senza fortuna, mi restituisce il seguente errore

****************************************************************** 
** No OAuth2 credentials found, beginning authorization process ** 
****************************************************************** 

E mi chiede di andare a un collegamento nel mio browser per impostare nuovamente le mie credenziali OAuth2.

opzione Gli strumenti di linea di comando iniziale configurazione 'init':

bq help init 

non visualizza informazioni utili su come impostare questo strumento per utilizzare un account di servizio.

risposta

5

Ho finito per trovare un po 'di documentazione su come impostare questa funzione

$ bq --help 

.... 

--service_account: Use this service account email address for authorization. For example, [email protected] 
(default: '') 

--service_account_credential_file: File to be used as a credential store for service accounts. Must be set if using a service account. 

--service_account_private_key_file: Filename that contains the service account private key. Required if --service_account is specified. 
(default: '') 

--service_account_private_key_password: Password for private key. This password must match the password you set on the key when you created it in the Google APIs Console. Defaults to the default Google APIs Console private key password. 
(default: 'notasecret') 

.... 

Si sia possibile impostare questi specificamente su ogni bq (client BigQuery a riga di comando) richiesta, vale a dire:

$ bq --service_account --my-client-id--.apps.googleusercontent.com -- service_account_private_key_file ~/.bigquery.v2.p12 ... [command] 

Oppure si puoi impostare i valori predefiniti nel tuo file ~/.bigqueryrc in questo modo

project_id = --my-project-id-- 
service_account = [email protected] 
service_account_credential_file = /home/james/.bigquery.v2.cred 
service_account_private_key_file = /home/james/.bigquery.v2.p12 

Il servizio in corso Puoi trovare nt nella Console dell'API di Google e impostare service_account_private_key_password quando hai creato il tuo account di servizio (il valore predefinito è "notasecret").

nota: percorsi di file in .bigqueryrc dovevano essere il percorso completo, ero in grado di utilizzare ~/.bigquery ... erano tenuti

Alcuni ulteriori dipendenze, è necessario installare OpenSSL tramite yum/apt-get

--yum-- 
$ yum install openssl-devel libssl-devel 

--or apt-get-- 
$ apt-get install libssl-dev 

e pyOpenSSL via facile installazione/pip

--easy install-- 
$ easy_install pyopenssl 

--or pip-- 
$ pip install pyopenssl 
+0

Seguire le istruzioni per l'esecuzione dell'account di servizio utilizzando l'immagine finestra mobile è sostanzialmente più semplice su OS X almeno: https://hub.docker.com/r/google/cloud-sdk/ – mentat

+0

Il modo giusto di utilizzare le credenziali dell'account di servizio su bq cli è necessario attivarlo utilizzando il comando "gcloud auth activate-service-account" e quindi eseguire bq senza alcun flag di autenticazione. Quelle bq flag sono solo per uso interno di gcloud. Si prega di non impostarli, interferisce con il gcloud e porta a risultati imprevedibili. – Daria

1

Lo strumento bq richiede due file di configurazione, controllato da --bigqueryrc e il flag --credential_file. Se nessuno dei due viene trovato, bq tenterà di inizializzarsi automaticamente all'avvio.

Per evitare questo per il file --bigqueryrc, è possibile inserire un file ".bigqueryrc" nel percorso predefinito, o sovrascriverlo con --bigqueryrc in un percorso file scrivibile.

Problemi correlati