ResumableUploadAbortException: 403 недостаточно прав
Я использую Google Cloud Storage и Google Compute Engine и пытаюсь загрузить данные в мою корзину с моей виртуальной машины. У моего ведра есть права на чтение / запись, как и у любого, кто имеет к нему доступ. Они помечены как владелец. Я могу скачать из моего ведра нормально. Когда я пытаюсь загрузить в свое ведро, это ошибка, которую я получаю. ResumableUploadAbortException: 403 Insufficient Permission
, Я не уверен, почему это так? Есть какие-нибудь подсказки?
8 ответов
Измените область доступа Cloud API виртуальной машины, чтобы разрешить чтение и запись в хранилище. Это в разделе "Области доступа" настроек виртуальной машины. Ваша виртуальная машина должна быть остановлена, чтобы сделать это.
https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances
Обратите внимание на этот комментарий к соответствующей записи, что вам может потребоваться удалить учетные данные в ~/.gsutil
после определения новой области.
На экземпляре GCE выполните следующие действия для настройки:
gcloud init
Вывод будет примерно таким.
Choose the account you would like to use to perform operations for this configuration:
[1] 533893300998-compute@developer.gserviceaccount.com
[2] Log in with a new account
Please enter your numeric choice: 1
Выберите номер 1, чтобы использовать учетную запись службы. Если это общая машина, и вы входите в систему со своей личной учетной записью, ваши учетные данные могут быть использованы кем-либо еще на машине. Подробнее читайте здесь
Используете ли вы учетную запись службы по умолчанию на виртуальной машине для доступа к корзине? Это только прочитало область по умолчанию. Попробуйте создать виртуальную машину с областью чтения / записи.
Вам необходимо предоставить учетной записи службы вашего экземпляра разрешение на создание объектов в вашей корзине хранилища. Хотя другие ответы достигают этого, они могут открывать больше разрешений, чем вам нужно. Вот как добавить только одно дополнительное разрешение:
- Получите адрес электронной почты своего служебного аккаунта:
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* 123456789-compute@developer.gserviceaccount.com
- Откройте корзину в Cloud Console и перейдите на вкладку "Разрешения".
- Нажмите "Добавить участников"
- Вставьте адрес электронной почты учетной записи службы, указанный выше
- В разделе "Роль" выберите "Администратор объекта хранения".
- Примечание: это дает разрешение на создание, список и удаление объектов. Если вам нужно только создать объекты, вы можете вместо этого попробовать "Storage Object Creator".
- Нажмите "Сохранить".
Обратите внимание, что это дает разрешения всем экземплярам, использующим одну и ту же учетную запись службы. Если вам нужен более детальный контроль доступа, вам следует создать отдельную учетную запись службы для каждого экземпляра.
После того, как вы выполните эти шаги, вам необходимо перезагрузить разрешения, как говорили другие:
rm -rf ~/.gsutil
rm -rf /root/.gsutil
Позвольте мне сделать более простые шаги, если это возможно:
- С консоли остановите виртуальную машину, отредактируйте управление доступом и измените разрешение "Хранилище" с READ на Write или full.
- Запустить виртуальную машину
Очистить кеш из командной строки
rm -r ~/.gsutil
Это должно работать.
При взаимодействии с другими продуктами Cloud Platform, такими как Google Cloud Storage (сегменты), неинтерактивными способами, например из экземпляра виртуальной машины, рекомендуется использовать области, которые, в свою очередь, используют учетные записи служб, предпочтительный способ проверки подлинности виртуальной машины. / системы. Дальнейшее чтение можно найти здесь.
Очень понравился ответ Даниэля Голдена. Специально удалить комментарий.
Это тоже очень помогло.
НАКЛОН:
rm -rf ~/.gsutil
- Рондо 7 августа в 18:04
если вы пришли сюда в поисках подобных вещей в Windows, в дополнение к ответу Даниэля выполните следующие действия после перезапуска экземпляра.
Войдите в систему и перейдите к строке cmd с правами администратора и выполните
rmdir /s /q C:\users\<your-login-account>\.gsutil
с последующим
gcloud init
Это поможет вам повторно инициализировать вашу учетную запись с новой привилегией.
В основном выберите 1, а затем снова 1 на следующем шаге, и все готово.