Есть ли способ создать папку в / tmp при использовании облачных функций Google?

#python #google-cloud-platform #google-cloud-functions

#python #google-cloud-platform #google-cloud-функции

Вопрос:

Мне нужно было создать две папки внутри /tmp папки в облачных функциях Google. Я использую библиотеку, которая требует, чтобы файлы были в этом формате (они не могут быть просто все /tmp ).

Я попробовал это — os.makedirs('tmp/test') но это дало следующую ошибку:

 Function failed on loading user code. Error message: [Errno 30] Read-only file system: 'tmp'
Detailed stack trace:
Traceback (most recent call last):
File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v1.py", line 315, in check_or_load_user_function
_function_handler.load_user_function()
File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v1.py", line 190, in load_user_function
spec.loader.exec_module(main_module)
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/user_code/main.py", line 3, in <module>
os.makedirs('tmp/test')
File "/env/lib/python3.7/os.py", line 213, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/env/lib/python3.7/os.py", line 223, in makedirs
mkdir(name, mode)
OSError: [Errno 30] Read-only file system: 'tmp'
  

Как я могу это решить?

Комментарии:

1. sudo chmod -R 766 /tmp

2. Возможно, вам захочется установить префикс tmp with / , чтобы убедиться, что он попытается создать подкаталог под корневым /tmp каталогом, а не под текущим каталогом. Итак os.makedirs('/tmp/test') .

3. Привет @Shawn, ты попробовал это сделать после комментария Фрэнка?

Ответ №1:

При использовании os.makedirs('tmp/test') будет предпринята попытка создать каталог at /user_code/tmp/test , который недоступен для записи.

Вы захотите использовать начальную косую черту, чтобы убедиться, что вместо этого вы создаете каталог at /tmp/test , который является единственной доступной для записи частью файловой системы.