Назад | Перейти на главную страницу

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

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

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

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

На сервере я активировал сервисный аккаунт так:

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

Конечно, я действительно проверил, что в списках ACL корзины действительно отображается учетная запись службы как OWNER. Я также пробовал это на другом компьютере с другой ОС. Тот же результат. Излишне говорить, что я сам не могу разобраться в сообщениях об ошибках. Буду признателен за любые предложения. Подробный журнал ошибок это суть.

Обновить:

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

gsutil config -e

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

Однако я не уверен, что я должен идти по этому пути. Как мне заставить это работать, используя gcloud auth?

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

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

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