WedX - журнал о программировании и компьютерных науках

Учетные записи службы GCP для хранилища не работают

Я создал сервисные аккаунты в GCP Console IAM & Admin> Сервисные аккаунты >> Создать

Назначенные администратор хранилища, администратор объекта хранилища, создатель объекта хранилища

Создан ключ и загружен файл json

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

$ gcloud auth activate-service-account --key-file service-account.json 
Activated service account credentials for: [[email protected]]

Затем я смог скопировать файл в хранилище

$ gsutil cp image-src.txt gs://bucket-images
Copying file://image-src.txt [Content-Type=text/plain]...
/ [1 files][ 19.5 KiB/ 19.5 KiB]                                                
Operation completed over 1 objects/19.5 KiB.

Но когда я пытаюсь использовать service-account.json с приложением node.js, я получаю

(node:1) UnhandledPromiseRejectionWarning: Error: [email protected] does not have storage.objects.create access to the Google Cloud Storage object.
    at new ApiError (/ingester/node_modules/@google-cloud/common/build/src/util.js:59:15)
    at Util.parseHttpRespBody (/ingester/node_modules/@google-cloud/common/build/src/util.js:194:38)
    at Util.handleResp (/ingester/node_modules/@google-cloud/common/build/src/util.js:135:117)
    at retryRequest (/ingester/node_modules/@google-cloud/common/build/src/util.js:434:22)
    at onResponse (/ingester/node_modules/retry-request/index.js:206:7)
    at /ingester/node_modules/teeny-request/build/src/index.js:170:17
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 5)

Правильно ли я создаю учетную запись службы?

Обновление: после ответа v1gnus

Я пытался получить

cloudshell:~ $ gcloud iam service-accounts get-iam-policy [email protected]
etag: ACAB

Затем я попытался установить политику

cloudshell:~ $ gcloud projects add-iam-policy-binding xxx-123 --member serviceAccount:[email protected]
m.gserviceaccount.com --role roles/storage.admin
    Updated IAM policy for project [xxx-123].
    bindings:
    ...
    - members:
      - serviceAccount:[email protected]
      role: roles/storage.admin
    - members:
      - serviceAccount:[email protected]
      role: roles/storage.objectAdmin
    - members:
      - serviceAccount:[email protected]
      role: roles/storage.objectCreator
    etag: rfvtgyh-4Gw=
    version: 1

После этого я все еще получаю это

cloudshell:~ $ gcloud iam service-accounts get-iam-policy [email protected]
etag: ACAB

Ответы:


1

Похоже, у вас проблема с разрешениями в вашей служебной учетной записи.

“Error: [email protected] does not have storage.objects.create access to the Google Cloud Storage object.”

Вы можете просмотреть, какая роль была назначена вашей учетной записи службы, набрав команда:

gcloud iam service-accounts get-iam-policy [email protected]

Для получения дополнительной информации о том, как использовать клиентский API Node.js Google Cloud Storage, перейдите по этой ссылке.

20.05.2020
  • В официальной документации говорится, что на выходе будет отображаться только значение etag, если вы не назначили роль учетной записи службы. Затем вам следует перезапустить процесс с самого начала и назначить назначенную роль. Вы можете попробовать использовать консоль, если это поможет. 25.05.2020
  • Мне нужно было дать разрешение пользователю на ведро. Что сработало. Исходные документы .cloudera.com / HDPDocuments / HDP2 / HDP-2.6.5 / 25.05.2020
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]