После начала использования s3fs
– выяснилась одна деталь.
Файлы загружаются с помощью boto3
.
Но после того, как корзина смонтирована к системе – получить доступ к файлам нельзя:
[simterm]
$ cp /mnt/projectname-idfa/projectname\ android\ purchase\ idfa.csv /tmp/ cp: cannot open '/mnt/projectname-idfa/projectname android purchase idfa.csv' for reading: Permission denied
[/simterm]
Проверяем права на файлы – и ой:
[simterm]
$ ll /mnt/projectname-idfa/ total 730980 ---------- 1 root root 12688821 Nov 22 11:29 'projectname android install idfa.csv' ---------- 1 root root 667425 Nov 22 11:29 'projectname android purchase idfa.csv' ---------- 1 root root 60514676 Nov 22 11:28 'projectname ios install idfa.csv' ---------- 1 root root 1637570 Nov 22 11:29 'projectname ios payment idfa.csv' ...
[/simterm]
И сменить права через chmod
тоже не получится:
[simterm]
$ sudo chmod 644 /mnt/projectname-idfa/projectname\ android\ purchase\ idfa.csv chmod: cannot access '/mnt/projectname-idfa/projectname android purchase idfa.csv': Permission denied
[/simterm]
Решение – задавать права доступа через Metadata
, при загрузке данных в корзину. См. комментарий тут>>>.
Обновляем скрипт, добавляем ExtraArgs
:
... _s3.meta.client.upload_file(out_file_name, os.environ['BUCKET_NAME'], out_file_name, \ ExtraArgs={ "Metadata": { "mode": "33204", "uid": "1000", "gid": "1000", }, },) ...
Запускаем его, проверяем права на файлы теперь:
[simterm]
$ ll /mnt/projectname-idfa/ total 731040 -rw-rw-r-- 1 setevoy setevoy 12694741 Nov 22 12:17 'projectname android install idfa.csv' -rw-rw-r-- 1 setevoy setevoy 667647 Nov 22 12:17 'projectname android purchase idfa.csv' -rw-rw-r-- 1 setevoy setevoy 60524370 Nov 22 12:17 'projectname ios install idfa.csv' ...
[/simterm]
Готово.