Как изменить области доступа Cloud API в GCP Compute Engine без остановки экземпляра

Как изменить области доступа Cloud API в GCP Compute Engine без остановки экземпляра

Я использую gcsfuseвнутри Google Compute Engine. Я смонтировал папку с облачным хранилищем, но не смог создать внутри нее ни одного файла:

touch t1

с ошибкой:

touch: cannot touch 't1': Input/output error

Решение проблемы - датьОбласть доступа к API облака: хранилище: чтение/запись

Как изменить области доступа Cloud API на GCP Compute Engine без остановки экземпляра? Пожалуйста, предоставьте мне решение этой проблемы.

Заранее спасибо!

решение1

Похоже, у вас недостаточно прав GCS. Посмотрите надокументациядля gcsfuse. Если вы используете учетную запись службы на виртуальной машине GCE, обязательно настройте виртуальную машину с storage-fullобластью доступа.

Вы можете попробовать исправить это следующим образом:

  1. создать учетную запись службы (подробнеездесь)
  2. создайте ключ для учетной записи сервиса и загрузите файл .json
  3. предоставить соответствующую роль учетной записи службы
  4. предоставьте соответствующие разрешения учетной записи службы на контейнере
  5. загрузите учетные данные .json для учетной записи службы на виртуальную машину
  6. определите переменную среды, содержащую путь к учетным данным учетной записи службы при вызове gcsfuseиз командной строки:

    GOOGLE_APPLICATION_CREDENTIALS = /root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
    

    используйте key_fileопцию для достижения той же цели, fstabкак это задокументированоздесь.

Кроме того, вам необходимо использовать переменную среды или key_fileпараметр, даже если вы настроили учетную запись службы на виртуальной машине с помощью:

gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json

Если проблема все еще существует, пожалуйста, дополните свой вопрос шагами, командами и полными результатами.

Связанный контент