Я использую Google Cloud Storage и Google Compute Engine и пытаюсь загрузить в свою корзину со своей виртуальной машины. У моего ведра есть разрешения на чтение и запись, как и у всех, кто имеет к нему доступ. Они помечены как Владелец. Я могу скачать из своего ведра нормально. Когда я пытаюсь загрузить в корзину, я получаю эту ошибку. ResumableUploadAbortException: 403 Insufficient Permission
. Я не уверен, почему это так? Какие-нибудь подсказки?
ResumableUploadAbortException: 403 Недостаточное разрешение
Ответы (6)
Измените область доступа к Cloud API виртуальной машины, чтобы разрешить чтение и запись в хранилище. Это находится в разделе «Области доступа» в настройках виртуальной машины. Для этого необходимо остановить вашу виртуальную машину.
0. Stop VM instance
1. Open VM instance details
2. Press "Edit"
3. Change Cloud API access scope--> "Allow full access to all cloud APIs"
ВАЖНЫЙ!! Обратите внимание на этот комментарий к соответствующему сообщению, которое вы может потребоваться удалить учетные данные в ~/.gsutil
после определения новой области.
# VM instance console
sudo rm -r ~/.gsutil
На экземпляре GCE выполните следующие действия для настройки: Нет необходимости перезапускать Compute Engine,
gcloud init
Результат будет примерно таким.
Choose the account you would like to use to perform operations for this configuration:
[1] [email protected]
[2] Log in with a new account
Please enter your numeric choice: 1
Выберите номер 1, чтобы использовать учетную запись службы. Если это общая машина, и вы входите в систему под своей личной учетной записью, ваши учетные данные могут быть использованы кем-либо еще на этой машине. Подробнее Прочтите здесь
Если вы уже инициализировали gcloud, повторная инициализация не требуется.
gcloud auth login
Используете ли вы учетную запись службы по умолчанию на виртуальной машине для доступа к корзине? По умолчанию это только область чтения. Попробуйте создать виртуальную машину с областью чтения / записи.
При взаимодействии с другими продуктами Cloud Platform, такими как Google Cloud Storage (корзины), неинтерактивными способами, например, из экземпляра виртуальной машины, рекомендуется использовать области, которые, в свою очередь, используют учетные записи служб, что является предпочтительным способом аутентификации виртуальной машины. / системы. Дополнительную информацию можно найти здесь.
позвольте мне, если возможно, сделать более простые шаги:
- С консоли остановите виртуальную машину, отредактируйте управление доступом и измените разрешение «Хранилище» с READ на Write или full.
- Запустить виртуальную машину
Очистить кеш из командной строки
rm -r ~ / .gsutil
Это должно работать.
Вам необходимо предоставить сервисной учетной записи вашего экземпляра разрешение на создание объектов в вашей корзине хранилища. Хотя другие ответы достигают этого, они могут открывать больше разрешений, чем вам нужно. Вот как добавить только одно дополнительное разрешение:
- Получите адрес электронной почты своего служебного аккаунта:
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* [email protected]
- Откройте корзину в Cloud Console и перейдите на вкладку «Разрешения».
- Нажмите "Добавить участников"
- Вставьте адрес электронной почты учетной записи службы, указанный выше
- Under "Role", select "Storage Object Admin"
- Note: this gives permission to create, list, and delete objects. If you only need to create objects, you can try "Storage Object Creator" instead.
- Нажмите "Сохранить".
Обратите внимание, что это дает разрешения всем экземплярам, использующим одну и ту же учетную запись службы. Если вам нужен более детальный контроль доступа, вы должны создать отдельную учетную запись службы для каждого экземпляра.
После того, как вы выполните эти шаги, вам нужно перезагрузить разрешения, как говорили другие:
rm -rf ~/.gsutil
rm -rf /root/.gsutil