Я вошел в экземпляр GCE через SSH. Оттуда я хотел бы получить доступ к Хранилищу с помощью учетной записи службы:
GCE> gcloud auth list
Credentialed accounts:
- 1234567890-compute@developer.gserviceaccount.com (active)
Сначала я убедился, что эта учетная запись службы отмечена флажком «Может редактировать» в разрешениях проекта, над которым я работаю. Я также удостоверился, что предоставил ему ACL записи в корзине, я бы хотел, чтобы он скопировал файл:
local> gsutil acl ch -u 1234567890-compute@developer.gserviceaccount.com:W gs://mybucket
Но тогда следующая команда не работает:
GCE> gsutil cp test.txt gs://mybucket/logs
(Я также убедился, что «журналы» создаются в «mybucket»).
Я получаю следующее сообщение об ошибке:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
Что мне не хватает?
google-cloud-storage
Кристоф
источник
источник
Ответы:
Еще одна вещь, на которую следует обратить внимание, - это убедиться, что вы настроили соответствующие области при создании виртуальной машины GCE. Даже если к виртуальной машине подключена учетная запись службы, для доступа к GCS ей должны быть назначены области хранилища разработки.
Например, если вы создали свою виртуальную машину с
devstorage.read_only
областью действия, попытка записи в корзину завершится ошибкой, даже если ваша учетная запись службы имеет разрешение на запись в корзину. Вам понадобитсяdevstorage.full_control
илиdevstorage.read_write
.Дополнительные сведения см. В разделе « Подготовка экземпляра к использованию учетных записей служб» .
Примечание: учетная запись службы вычислений по умолчанию имеет очень ограниченные области (включая доступ только для чтения к GCS). Это сделано потому, что учетная запись службы по умолчанию имеет разрешения IAM редактора проекта. Если вы используете какую-либо учетную запись службы пользователя, это обычно не проблема, поскольку учетные записи служб, созданные пользователем, по умолчанию получают доступ ко всей области действия.
После добавления необходимых областей в виртуальную машину,
gsutil
возможно, все еще будут использоваться кэшированные учетные данные, для которых нет новых областей. Удалите~/.gsutil
перед повторной попыткой использования команд gsutil. (Спасибо @mndrix за указание на это в комментариях.)источник
gsutil
возможно, все еще будут использоваться кэшированные учетные данные, для которых нет новых областей. Удалите ~ / .gsutil перед повторной попыткой выполненияgsutil
команд.Вы должны войти в систему с учетной записью, у которой есть разрешения, необходимые для этого проекта:
источник
gcloud auth revoke <email-account>
после того, как закончите.gsutil config -b
Затем перейдите по указанному URL, [НАЖМИТЕ Разрешить]
Затем скопируйте проверочный код и вставьте в терминал.
источник
gsutil
изssh
.-b
. Это не откроет браузер, а просто выдаст URL-адрес, который можно открыть за пределами оболочки.источник
Я написал ответ на этот вопрос, так как не могу оставлять комментарии:
Эта ошибка также может возникать, если в некоторых случаях вы запускаете
gsutil
команду сsudo
префиксом.источник
gcloud auth login
и следуйте инструкциям.Ссылка: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ
источник
Итак, я попробовал кучу вещей, пытаясь скопировать из корзины GCS на мою виртуальную машину. Надеюсь, этот пост кому-то поможет.
Через соединение SSHed:
и следуя этому сценарию:
Получил эту ошибку:
Это было исправлено после раздела «Активация API», упомянутого в этой ссылке - https://cloud.google.com/storage/docs/json_api/
Как только я активировал API, я аутентифицировался в окне SSHed через
После процедуры аутентификации я наконец смог загрузить из Google Storage Bucket на мою виртуальную машину.
PS
Я позаботился:
Перейдите в мою корзину, перейдите на вкладку разрешений и добавьте нужные учетные записи служб и установите разрешение / роль администратора хранилища.
3.Убедитесь, что у моей виртуальной машины есть подходящие области доступа к Cloud API:
источник
Из документов: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes
Вам нужно сначала остановить экземпляр -> перейти на страницу редактирования -> перейти в «Области доступа к облачному API» и выбрать «полный доступ к хранилищу или чтение / запись или что-то еще, для чего вам это нужно».
источник
Измените права доступа к ведру.
Добавьте пользователя для «Все пользователи» и предоставьте доступ «Администратору хранилища».
источник