amazon_s3 - taka512/memo GitHub Wiki
amazon S3
1. S3バケットの作成
「Create Bucket」でBucket Nameを指定する。これはs3にアクセスするパスのhogehogeの部分になる「hogehoge.s3.amazonaws.com」 hogehogeの部分は保有ドメインと同じにするとCNAMEで設定できるようになる。 例えば「www.doreda.com」とバケット名と指定すれば、CNAMEを設定する事により「www.doreda.com」でS3バケットにアクセスできるようになる。 また、設定しないとパーミッションエラーとなる。
バケットを作成すると一覧に表示されるので、バケットを選択→「Properties」→「Permissions」で「add bucket policy」を選択
「Bucket Policy Editor」のダイアログが立ち上がってくるので左下の「AWS Policy Generator」をクリックする。
「Select Type of Policy」は「S3 Bunket Policy」を選択 「Principal」は「」を入力(全ユーザ対象って意味) 「Actions」は「GetObject」を選択 「Amazon Resource Name」は「arn:aws:s3:::www.doreda.com/」を設定www.doreda.comの部分は自分ドメイン名を設定
そして「Add Statement」から「Generate Policy」してjsonが表示されるのでコピペして「Bucket Policy Editor」に入力してSaveボタンを押す
この後、「www.doreda.com」のCNAMEに「www.doreda.com.s3.amazonaws.com」を設定する事でwww.doreda.comでS3バケットにアクセスできる
2. s3バケットを静的websiteとして設定
S3バケットの「properties」からエンドポイントを設定できる。 下記のように設定する事によりindex.htmlを参照するになる。
http://www.doreda.com.s3-website-ap-northeast-1.amazonaws.com/
「s3-website-ap-northeast-1.amazonaws.com」の部分はTokyoリージョンで固定 詳しくは下記を参照 http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
3. s3をEC2にマウント
s3fsを利用してEC2にs3バケットをマウントする。
公式
http://code.google.com/p/s3fs/
必要パッケージをインストール
公式のリスト
http://code.google.com/p/s3fs/wiki/InstallationNotes
sudo yum install gcc libstdc++-devel gcc-c++ fuse fuse-devel curl-devel libxml2-devel openssl-devel mailcap
$ wget http://s3fs.googlecode.com/files/s3fs-1.70.tar.gz $ tar xvfz s3fs-1.70.tar.gz $ ./configure $ make $ sudo make install $ which s3fs /usr/local/bin/s3fs
s3fsは初期設定だと一般ユーザで利用できないので利用できるようにする
$ sudo vi /etc/fuse.conf
# コメント解除
user_allow_other
アクセスキーとシークレットキーを設定 AWSAccessKeyIdとAWSSecretKeyはawsのwebサイトから取得する。
$ sudo vi /etc/passwd-s3fs
AWSAccessKeyId:AWSSecretKey
$ sudo chmod 640 /etc/passwd-s3fs
s3バケットをマウント 「www.doreda.com」はバケット名
$ sudo /usr/local/bin/s3fs www.doreda.com /var/www/mt/html -o allow_other