Как я получаю доступ к блоку облачного хранилища Google с помощью сервисной учетной записи из командной строки?

Я думал, что это будет довольно прямым, чтобы сделать это, но я не могу заставить это работать:

Я пытаюсь продвинуть файлы с сервера (GCE) к блоку облачного хранилища Google. Постараться не предоставлять gsutil команда на сервере слишком много прав, я создал "Сервисную учетную запись" в разделе учетных данных моего проекта Google.

К блоку gs://mybucket Я добавил адрес электронной почты той сервисной учетной записи с полномочиями ВЛАДЕЛЬЦА как ПОЛЬЗОВАТЕЛЬ к блоку.

На сервере я активировал сервисную учетную запись как это:

$gcloud auth activate-service-account --key-file <path-to-keyfile> myservice

$gcloud auth list
Credentialed accounts:
 - 1234567890@project.gserviceaccount.com
 - myservice (active)

To set the active account, run:
  $ gcloud config set account <account>

Таким образом, все кажется прекрасным до сих пор. Однако доступ к сбоям блока:

$gsutil cp tempfile gs://mybucket
CommandException: Error retrieving destination bucket gs://mybucket/: [('PEM routines', 'PEM_read_bio', 'no start line')]

$gsutil cp tempfile gs://mybucket/tempfile
Failure: [('PEM routines', 'PEM_read_bio', 'no start line')].

Конечно, я действительно проверял, что ACLs блока действительно показывают сервисную учетную запись ВЛАДЕЛЬЦЕМ. Я также попробовал это на другой машине с другой ОС. Тот же результат. Само собой разумеется, я не могу иметь смысла из сообщений об ошибках сам. Я ценил бы любые предложения. Подробный журнал ошибок в этой сути.

Обновление:

После удаления ~/.config, где gcloud хранит его данные авторизации, использование команды устаревшей

gsutil config -e

генерирует ~/.boto с сервисной учетной записью, как предназначено. Последующий доступ к gs://mybucket действительно работает.

Однако я не уверен, что это - путь, за которым я, как предполагается, следую. Как я заставляю это работать с помощью gcloud auth?

7
задан 5 September 2018 в 03:55
2 ответа

У меня была та же самая проблема. Ключевой файл по умолчанию, который мне дал консоль разработчиков Google, на самом деле был файлом .json с ключевым материалом в поле json. Я отозвал служебный аккаунт с "gcloud auth revoke", сгенерировал новый ключ из консоли разработчиков и загрузил ключ в виде файла .p12, и на этот раз после активации служебного аккаунта он заработал

.
1
ответ дан 2 December 2019 в 23:46

Для записи, я видел такое же сообщение об ошибке сегодня при попытке включить учетную запись службы на GCE экземпляр через сгенерированный файл ключей json . Gcloud sdk, предустановленный на экземпляре, был слишком стар и не мог правильно работать с ключами json. Кроме того, инструмент не дает никакой обратной связи при попытке включить мою учетную запись таким способом, но попытка использовать учетную запись для авторизации завершится с указанной ошибкой.

После того, как я установил текущую версию, я смог включить свою учетную запись службы через gcloud auth activate-service-account --key-file /key.json, а затем gsutil cp файл gs: // testbucket / работал правильно.

3
ответ дан 2 December 2019 в 23:46

Теги

Похожие вопросы