AWSのS3を使う手順
やりたいこと
・ec2に構築したwebサービスのうち画像などの静的コンテンツはec2に置くのではなくs3におきたい。
・ec2上に構築する管理ツールなどからファイルのアップロードを行えるようにしたい。
ちなみにec2インスタンスの作成手順は以下にまとめてあります
AWSでLAMP環境を構築する手順 - とりあえずphpとか
s3の作成
1. 「ホーム」画面から「S3」をクリック ※「S3 Management Console」が開く
2. 「S3 Management Console」画面左上の「Create Bucket」ボタンをクリック ※小ウインドウが開く
3. 「Bucket Name」「Region」入力フォームよりこれらを入力して「Create Bucket」ボタンをクリック ※作成される
Bucket Nameは、作成されたs3にアップロードされた画像などのurl。以下は例
Bucket Name:image.example.com
という名前で作った場合、http://image.example.com.s3.amazonaws.com/***.jpgなどのurlでアクセスすることになる。
4. 「S3 Management Console」に、3.で追加したBucketが表示されるので、それを右クリックして「Properties」をクリック ※画面右に詳細設定画面が表示される
5. 4.で開いた画面の「Permissions」をクリックして、「Add bucket policy」をクリック ※ 小ウインドウの「Bucket Policy Editor」が開く
6. 5.で開いた「Bucket Policy Editor」の画面左下の「Aws Policy Generator」をクリック ※「AWS Policy Generator」が開く
7. 6.で開いた「AWS Policy Generator」で以下の項目を入力して「Add Statement」をクリック
Select Type of Plicy:「S3 Bucket Policy」を選択
Effect:「Allow」を選択
Principal:「*」を入力
Actions:「GetObject」を選択
Amazon Resource Name (ARN):「arn:aws:s3:::image.example.com/*」を入力
8. 7.の後に表示される「Generate Policy」ボタンをクリックすると、「Policy JSON Document」が表示されるのでそれをコピー
9. 6.の「Bucket Policy Editor」に8.の内容をペースト
ここまででs3バケットの作成が完了
s3の動作確認
「S3 Management Console」に作成されたバケット名をクリックすると、アップロード済みコンテンツ一覧の画面が表示される。
「Upload」ボタンより画像をアップロード。ここではhoge.jpgという画像をアップロードしたとして、
http://image.example.com.s3.amazonaws.com/hoge.jpgにアクセスしてみて画像が表示されればOK
ec2からs3へアクセスできるようにする
引き続きAWSの管理画面より以下を行う
1. 画面右上の「Welcome to AWS」をクリック後、「Security Credential」をクリック
2. 「Access Keys (Access Key ID and Secret Access Key)」の「Create New Access Key」をクリック
3. 2.で「Access Key ID」「Secret Access Keys」が作成されて表示されるのでこれをとっておく
s3fsをインストール
// s3fsに必要なパッケージ sudo yum install -y gcc libstdc++-devel gcc-c++ fuse fuse-devel curl-devel libxml2-devel openssl-devel mailcap // s3fsのダウンロードとインストール wget https://s3fs.googlecode.com/files/s3fs-1.74.tar.gz && tar xvfz s3fs-1.74.tar.gz && cd s3fs-1.74 && ./configure && make && sudo make install // 設定ファイル編集 sudo vi /etc/fuse.conf 2行目の「user_allow_othre」のコメントを外す sudo vi /etc/passwd-s3fs Access Key ID:Secret Access Keys sudo chmod 640 /etc/passwd-s3fs // s3マウント sudo /usr/local/bin/s3fs バケット名 マウント先 -o allow_othre sudo /usr/local/bin/s3fs image.example.com /var/www/html/image -o allow_othre //例
ちょっと長くなりましたが以上でs3が使えるようになりました。
次回はCloudFrontを利用して、s3に置いた画像をさらにキャッシュできるような手順をと思います
以上です