Как настроить инструмент командной строки BigQuery Google для использования учетной записи службы?

Я создал учетную запись службы с помощью консоли Google API и хочу использовать эту учетную запись службы с помощью Google BigQuery CLI (bq)..

Я использовал инструмент командной строки для успешного доступа к службе BigQuery с использованием моих действительных учетных данных OAuth2 в ~/.bigquery.v2.token, однако я не могу найти документацию о том, как изменить этот файл ( или иным способом настроить инструмент) вместо использования учетной записи службы.

Вот мой текущий файл .bigquery.v2.token

{
    "_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"
}

Мой другой файл: ~/.bigqueryrc обычно выглядит так:

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

Я попробовал установить параметр credential_file в файл закрытого ключа .p12 для моей учетной записи службы, но не повезло, он возвращает мне следующую ошибку.

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

И попросит меня перейти к ссылке в моем браузере, чтобы снова настроить мои учетные данные OAuth2.

Параметр начальной настройки инструментов командной строки "init":

bq help init

не отображается полезная информация о том, как настроить этот инструмент для использования учетной записи службы.

Ответ 1

В конце концов я нашел документацию о том, как установить это.

$ 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')

....

Вы можете установить их отдельно для каждого запроса клиента bq (запрос на запрос командной строки), то есть:

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

Или вы можете настроить значения по умолчанию в файле ~/.bigqueryrc таким образом

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

Учетную запись службы можно найти в консоли Google API, и при создании учетной записи службы вы установите service_account_private_key_password (по умолчанию это "notasecret" ).

note: пути к файлам в .bigqueryrc должны были быть полным путем, я не смог использовать ~/.bigquery...

Требуется несколько дополнительных зависимостей, вам нужно будет установить openssl через yum/apt-get

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

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

и pyopenssl через easy install/pip

--easy install--
$ easy_install pyopenssl

--or pip--
$ pip install pyopenssl

Ответ 2

В инструменте bq требуются два файла конфигурации, управляемые значком -bigqueryrc и -credential_file. Если ни один не найден, bq попытается автоматически инициализировать во время запуска.

Чтобы избежать этого для файла -bigqueryrc, вы можете поместить файл ".bigqueryrc" в папку по умолчанию или переопределить его с помощью --bigqueryrc в некоторый путь записи для записи.