3

S3FS と FUSE を使用して S3 バケットを AWS EC2 インスタンスにマウントすると、S3 ファイルが更新されるという問題が発生しましたが、新しいファイルには適切なアクセス許可が適用されません。

新しいファイルの ACL 権限は、「rw-r--r--」ではなく「--------」でした。次の方法で、バケットが適切にマウントされていることを確認しました。

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

/etc/fstab に自動マウントを作成します。

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

/etc/passwd-s3fs に適切な権限を持つパスワードファイルを作成します。

私のセットアップは、Ubuntu 13.04、PHP5、AWS SDK です。

2日間の実験の後、以下の回答で解決策(php用)を見つけました。

4

2 に答える 2

7

PHP 用の AWK SDK を使用してファイルを S3 に PUT する私の 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" は、S3 バケットの "---------" の代わりに "rw-r--r--" 権限を定義しました (ただし、EC2 マウント フォルダーにのみ反映されます)。 EC2 マウント ドライブ。

これが誰かに役立つことを願っています。お知らせ下さい!

于 2013-08-07T04:12:36.167 に答える
1

s3fs#[バケット名] [マウントポイント] デフォルトのヒューズ、noatime、allow_other、uid=222、gid=48、use_cache=/tmp、default_acl=public-read 0 0

私にとって、この行は x-amz-meta-mode を設定しなくても機能します! 注意: uid=222 はサーバー ec2-user 用で、gid=48 はサーバー apache グループ用です。

すべてのスクリプト php は apache グループで実行されます。そのため、gid を 48 にする必要があると思います。

s3fs マウントされたバケットのユーザー所有権の変更も参照してください

于 2013-12-18T20:49:40.640 に答える