AWS S3 Bucketを instanceにマウント

2013年6月18日

aws php library

http://aws.amazon.com/jp/developers/getting-started/php/

サーバで発生する大量のログをS3上で保管するための作業ログ
–>> s3をCDNとして活用するためのログ

  1. S3 上で Bucket 生成
  2. S3上で生成されたBucketに下記権限を追加
    {
    “Version”:”2012-10-17″,
    “Statement”:[{
    "Sid":"AddPerm",
    "Effect":"Allow",
    "Principal": {
    "AWS": "*"
    },
    "Action":["s3:GetObject"],
    “Resource”:["arn:aws:s3:::{bucket name}/*"
    ]
    }
    ]
    }

  3. s3マウントに必要なライブラリインストール
    yum install gcc libstdc++-devel gcc-c++ fuse fuse-devel curl-devel libxml2-devel openssl-devel mailcap make
    
  4. アクセスーキーの登録(AWSトップページの上部にあるメニューから[Your Account]-[Security Credentials]で「Access Credentials」のセクションにある[Access Keys]で「Access Key ID」と「Secret Access Key」の英数字列
    vim /etc/passwd-s3fs
    accesskeyid:secretaccesskey
    
  5. 権限設定
    chmod 600 /etc/passwd-s3fs 
  6. s3fsのインストール
    wget http://s3fs.googlecode.com/files/s3fs-1.61.tar.gz
    tar xvzf s3fs-1.61.tar.gz
    cd s3fs-1.61/
    ./configure --prefix=/usr
    make
    sudo make install
    
  7. Requested ‘fuse >= 2.8.4′ but version of fuse is 2.8.3 エラー時
    yum remove fuse fuse*
    [download latest fuse from here - >http://sourceforge.net/projects/fuse/postdownload?source=dlp]
    tar -zxf fuse-2.8.6.tar.gz
    cd fuse-2.8.6
    ./configure --prefix=/usr
    make
    make install
    export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/
    ldconfig
    modprobe fuse
    pkg-config --modversion fuse (should return new version)
    
    
    <li>s3マウント
    1
    mkdir /mnt/s3 #マウント用のdirectory 生成
    s3fs [自分のbucket名]  /mnt/s3 #マウント -o allow_other
    

マウントは上記で終了
以下ログバックアップのためのロジック

  1. batch時点の日付directory生成 #prev_batch_date < user_log_data_period =ユーザごとに保存されるdirectoryを検索
    $userId =xxx #作業対象ユーザ
    function findUserDirectory($userId,$directoryStr=""){
         
         if($userId/$mod == 0){
         //現在のdirectory階層に保存
         
         }else{
    
         }
    }
    

    Have your say