2013-08-07 4 views
2

Использование S3FS и FUSE для монтирования ведра S3 в экземпляр AWS EC2, я столкнулся с проблемой, когда мои файлы S3 обновляются, но новые файлы не работают, t принять надлежащее разрешение.Mount S3 (s3fs) на EC2 с динамическими файлами - Постоянное публичное разрешение

Права ACL, что новые файлы были «---------» вместо «rw-r-r--». Я заверил, что ковш установлен должным образом:

sudo /usr/bin/s3fs -o allow_other -o default_acl="public-read" [bucketname] [mountpoint] 

и создание автомонтирование в/и т.д./Fstab:

s3fs#[bucketname] [mountpoint]  fuse defaults,noatime,allow_other,uid=1000,gid=1000,use_cache=/tmp,default_acl=public-read 0 0 

и пароль файл в/и т.д./пароль-s3fs с нужными разрешениями ,

Моя настройка Ubuntu 13.04, PHP5, AWS SDK.

После 2 дней экспериментов я нашел решение (для php) в приведенном ниже ответе.

ответ

6

В моем PHP скрипт, который PUT файлы в S3 с использованием AWK SDK для PHP, я должен был добавить в мета-данных, как показано ниже, который сделал трюк:

$response = $s3->create_object('bucketname', 'mountpoint/'.$filename, array(
    'body' => $json_data, 
    'contentType' => 'application/json', 
    'acl' => AmazonS3::ACL_PUBLIC, 
    'meta' => array(
     'mode'   => '33188', // x-amz-meta-mode 
    ) 
)); 

Режим «33188» определен разрешения «rw-r-r--» вместо «---------» в ведро S3 (но отражены только в папке, установленной в EC2), которая позже была унаследована установленным на EC2 диском.

Надеюсь, это поможет кому-то. Дай мне знать!

+0

Как эти разрешения можно изменить? Я не понимаю эту цифру для разрешений. –

+1

Это старый пост, поэтому я постараюсь изо всех сил вспомнить. Я предполагаю, что вы знакомы с разрешением 0644 (восьмеричный) или «rw-r-r--». 33188 - это режим в десятичной системе. Режим содержит как тип файла, так и его разрешение, а когда вы маскируете тип файла, вы получаете разрешения 0644. См. Http://stackoverflow.com/a/15059931/1140227 и http://www.perlmonks.org/? node_id = 985371 – George

0

s3fs # [bucketname] [точка_монтирования] предохранителей по умолчанию, noatime, allow_other, UID = 222, GID = 48, use_cache =/TMP, default_acl = общественного чтения 0 0

Для меня эта линия работа wihtout установки х-АМЗ-мета-режим! позаботьтесь: uid = 222 для моего сервера ec2-user и gid = 48 для моей серверной группы apache.

Все сценарии php выполняются с группой apache. Вот почему я думаю, что вам нужно поставить ГУР на 48.

смотри также Change user ownership of s3fs mounted buckets