( Where && What ) is S3 ?
概要
Rails開発でファイルアップロード機能を実装しました。
CarrierWave(gem)を使用していたのですが、ストレージ指定で
ドキュメントに「S3」と書いてあり、どこ!? となった過去が‥
そんな謎ワード「S3」がAWSのサービスであると知った今日この頃。
忘れないうちに得た知識を備忘録として残します。
S3(SimpleStrageService)とは
- オブジェクトストレージサービス
- 非常に安価
- 月額3円/GB(120円/ドル換算)
- 耐久性が優れている
- 99.999999999%(イレブンナイン)
- データが吹っ飛ぶ心配はしなくていいレベル
- バケット
- アクセス管理
- 利用ユーザやFromIp制御等をバケット単位で設定可能
- Webサイトホスティング機能
- S3以外のサービスを使用せずに静的サイトを公開可能
利用ケース
- 静的コンテンス配信
- HTMLのIMG参照先をサーバ内ではなくS3配置ファイルで指定
- サーバで管理するよりローコストで管理が容易
- ログ等のエクスポート先
- サーバで作られるログ等のファイルをS3に転送
- AutoScaling等でサーバが消失する場合もログを残せる
- バッチ連携用一時ファイル置き場
- 別サービスと自サービスのデータ受け渡し場所
- 静的Webホスティング
- LPのような検索等が発生しないページをサーバレスで公開
サーバからS3を操作する準備
誰の権限で操作するのか設定する必要があります。
以下の手順でアクセスキーを生成して使用することで、
該当ユーザと同様の権限で操作できるようにできます。
- IAM>ユーザー 対象のユーザをクリック
- 認証情報>アクセスキー作成
- アクセスキーとシークレットアクセスキーを取得
- 以下のコマンドをサーバで実行してアクセスキーを登録
[ec2-user@aws-web-1a ~]$ aws configure AWS Access Key ID [None]: **アクセスキー** AWS Secret Access Key [None]: **シークレットアクセスキー** Default region name [None]: ap-northeast-1 Default output format [None]: json
ap-northeast-1 ‥ 東京リージョン
実際に触ってみた
静的ホスティングサイト作成
- 静的ホスティング用のバケットを作成
- 作成したバケットにindex.htmlをアップロードする(デフォルト設定でOK)
- プロパティ>StaticWebsiteHosting クリック
- このバケットを使用してウェブサイトをホストする 選択
- インデックスドキュメントにindex.htmlを入力
- エンドポイントURLを取得(これでサイトに接続)
- アクセス権限>バケットポリシー クリック
- バケットポリシーエディターに以下を入力
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadForGetBucketObjects", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::バケット名/*" } ] }
"Version": "2012-10-17" ‥ 固定でこの値を使用しましょう
Jsonポリシー要素:Versionについて
まとめ
「S3」はスーパー優秀なファイル置き場。
様々なシステムを陰ながら支える縁の下の力持ちのような存在。
個人的には静的ホスティングに感動した1日でした。