Я использую 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
областью доступа.
Вы можете попробовать исправить это следующим образом:
- создать учетную запись службы (подробнеездесь)
- создайте ключ для учетной записи сервиса и загрузите файл .json
- предоставить соответствующую роль учетной записи службы
- предоставьте соответствующие разрешения учетной записи службы на контейнере
- загрузите учетные данные .json для учетной записи службы на виртуальную машину
определите переменную среды, содержащую путь к учетным данным учетной записи службы при вызове
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
Если проблема все еще существует, пожалуйста, дополните свой вопрос шагами, командами и полными результатами.