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