クラウドを支えるs3の基本を学ぼう
DESCRIPTION
TRANSCRIPT
AWSを支える S3の基本を学ぼう!
自己紹介
• 石澤直人(@youyo_) • ゆとり第一世代の27歳 • 株式会社ヘプタゴン • JAWS-‐UG 青森支部 • JAWS-‐UG 青森支部の仙台支部 • h4p://blog.youyo.info/ • h4ps://www.facebook.com/naoto.ishizawa.94
ちょっとだけ 会社紹介を。。。
これ。
• 株式会社ヘプタゴン
• 東北に本社を置く(たぶん)唯一のクラウド専業インテグレーター
• クラウド上のインフラの設計/構築から保守/運用まで
• フルマネージドでお客様はコンテンツに集中できる環境に
• 大規模な複数台からミニマムな構成までビジネスに合わせたインフラ設計
※ うちのコーポレートサイトはクソなので見てはいけない
会社紹介
僕。 社長。((立花氏))
ピーク時数千アクセス/secのECインフラを担当
S3とは?
S3 とは?
• 正式名称 「Amazon Simple Storage Service 」 • 以下のような特徴を持つを持つオンラインストレー
ジサービス -‐ 高いスケーラビリティ -‐ 高い信頼性・堅牢性 -‐ セキュア -‐ 高速 -‐ 低価格
このアイコンが目印!
S3 のよくある利用例
• コンテンツの保存と配信 -‐ メディア、エンターテイメントのコンテンツ -‐ ソフトウェアの配信
• 大規模データ分析のストレージ、オリジナルデータ -‐ オンラインストレージ -‐ アプリケーションそのもののストレージ
• バックアップやディザスタリカバリ -‐ 各サーバのバックアップ -‐ データベースバックアップ -‐ 個人のバックアップ
こんなところでも S3 が使われてる!
• DropBox -‐ データ保存先としてS3を利用
• CookPad -‐ 画像配信ストレージのバックエンドとしてS3を利用
• HipChat、Qiita -‐ アップロードされたファイルの保存先としてS3を利用
• IO-‐DATAのNAS -‐ S3連携機能があり、双方向同期が可能
S3 はAWSの中心的存在
SS33
EECC22
RReeddsshhiifftt EEBBSS
GGllaacciieerr
CClloouuddFFrroonntt
RRDDSS
S3 の概要
データセンターB
東京リージョン
3カ所以上で自動複製。 保存するデータは自動暗号化も可能
データ(オブジェクト)を置くだけ! インフラ、電源等を気にしない! 容量は無制限! 世界中の8拠点(リージョン)から選択
データセンターA
データセンターC
バケット
使った分だけの 従量課金
S3 の用語 • バケット
-‐ オブジェクト置き場。最大100/アカウント。名前がユニークである必要がある。以下のような命名規則が存在する。 -‐ 3〜63文字以内で小文字の英文字、数字、ピリオド、ハイフンが使用可能 -‐ 先頭と末尾にピリオドは使用できない。ピリオドとハイフンは連続できない。
• オブジェクト -‐ S3に置くファイルの単位で、1URLが付与される。バケット内には無制限にオブジェクト設置可能。1オブジェクトのサイズは5TBまで。
• キー -‐ オブジェクト毎に付与される一意な文字列
• ACL -‐ アクセスコントロールリスト
S3 の構成
Amazon S3
バケット
オブジェクト オブジェクト
バケット
オブジェクト オブジェクト
バケット
オブジェクト オブジェクト
S3 の構成
Amazon S3
heptagon
image/test.jpg hoge.png
hoge
css/test.css index.html
fuga
image.jpg hoge.png
S3 の構成
Amazon S3
heptagon
image/test.jpg hoge.png
hoge
css/test.css index.html
fuga
image.jpg hoge.png
http://heptagon.s3.amazonaws.com/image/test.jpg
S3 のストレージの種類
• S3には2種類のストレージがある -‐ スタンダードストレージ -‐ 低冗長化ストレージ
S3 スタンダードストレージ
• デフォルトのストレージ • 3カ所以上のデータセンターに自動複製される • 同時に3カ所以上のデータセンターが消失しない限
りデータを失わない • 障害検知とデータ修復が自動で行われる • 99.999999999%の堅牢性と99.99%の可用性をもつ
S3 低冗長化ストレージ
• reduce redundancy storage(RRS) • 単一データセンターでのデータ損失を防ぐように設計 • 障害検知とデータ修復が自動で行われる • 99.99%の堅牢性と99.99%の可用性をもつ • スタンダードに比べ20%ぐらい安い
S3 スタンダード RRS 比較
堅牢性 損失オブジェクト数
スタンダード 99.999999999% ほぼ0
低冗長化 99.99% 100個
• 1,000,000オブジェクト保存した場合の損失数
S3 スタンダード RRS 比較
• スタンダードストレージと低冗長化ストレージ使い分け
スタンダードストレージ 低冗長化ストレージ
使いどころ オリジナルの画像データ 解析に使用する元データ 消えると困るデータ
オリジナル画像から再作成可能なサムネイル画像 データ解析時に生成される一時ファイル 再生成可能なデータ
S3 の料金
• ストレージ容量 • データ転送量 • リクエスト数
S3 の料金(ストレージ容量)
• 単純に保存容量に対して費用が発生する
(例 : 東京リージョン) スタンダードストレージ 低冗長化ストレージ
最初の1TB/月 $0.0330/GB $0.0114/GB
次の49TB/月 $0.0324/GB $0.0114/GB
次の450TB/月 $0.0319/GB $0.0114/GB
次の500TB/月 $0.0313/GB $0.0114/GB
次の4,000TB/月 $0.0308/GB $0.0114/GB
5,000TB以上/月 $0.0302/GB $0.0114/GB
S3 の料金(データ転送量) • 課金されるのはS3から外部への送信のみ • インターネットへの送信と、別リージョンまたはcloudfrontへ
の送信で費用が異なる • 同一リージョン内のEC2との通信は送受信ともに無料
S3からインターネットへの送信(アウト)
最初の1GB/月 $0.0330/GB
10TB/月 $0.0324/GB
次の40TB/月 $0.0319/GB
次の100TB/月 $0.0313/GB
次の350TB/月 $0.0308/GB
次の524TB/月 お問い合わせ
次の4PB/月 お問い合わせ
5PB以上/月 お問い合わせ
S3へのデータ転送受信(イン)
全ての受信(イン) $0.0000/GB
S3からのデータ転送送信(アウト)
同じリージョンのEC2 $0.0000/GB
別リージョンまたはcloudfront $0.090/GB
S3 の料金(リクエスト数)
• リクエストの数と種類に応じて費用が発生する
リクエストタイプ 料金
PUT、COPY、POST、LISTリクエスト $0.0047/1,000リクエスト
削除リクエスト 無料
GET及び他の全てのリクエスト $0.0037/10,000リクエスト
S3の使い方
S3 の基本的な使い方
• ファイルのPUT、GET、DELETE、LIST
S3 の基本的な使い方
• FTPクライアントソフトからも操作可能 • 各種SDKが揃っており、簡単に利用可能
#!/usr/bin/env ruby # coding: ui-‐8 require 'aws-‐sdk’ s3 = AWS::S3.new obj = s3.buckets[’my-‐s3-‐buckets'].objects[’object-‐key'] obj.write('Hello Festa!') puts obj.read #=> Hello Festa!
S3 の機能
• マルチパートアップロード • ライフサイクル機能 • S3-‐Glacier連携機能 • セキュリティ機能 • 静的Webサイトホスティング機能 • サーバアクセスログ • バージョニング • データ暗号化 • Webページリダイレクト
マルチパートアップロード
• 巨大なオブジェクトを複数の チャンクに分割してアップロード -‐ チャンクのアップロードが完了したら単一オブジェクトに結合 -‐ 5MB < チャンクサイズ < 5GB
• SDKにはマルチパート機能が実装されているためすぐに利用可能
• 簡易サスペンド/レジューム機能の実装も。 h4p://dev.classmethod.jp/cloud/aws/aws-‐s3-‐mulspart-‐upload/
オリジナルオブジェクト
複数のチャンクに分割
チャンク毎にアップロード
単一オブジェクトに結合
ライフサイクル機能
• 保存されたオブジェクトに対して有効期限を設定する • バケット毎に設定 • バケット単位、もしくは作成したルールに該当するオブジェクト
が対象になる • 日付・期間で指定可能 • 基準になる時間はGMT • 削除が実行されるのは翌日の0時
例) [2014/04/01 10:00 GMT] にオブジェクト作成されて、 ライフサイクルが3日の場合、 削除されるのは、[2014/04/05 00:00 GMT]
S3 のセキュリティ機能
• 認証のないアクセスからはデータを確実に保護 • オブジェクトは全てフルコントロール可能 • 特定ユーザーにのみ権限を与えることも可能
S3 のセキュリティ機能
• 認証のないアクセスからはデータを確実に保護 • オブジェクトは全てフルコントロール可能 • 特定ユーザーにのみ権限を与えることも可能 -‐ IAMポリシー -‐ バケットポリシー -‐ ACL
IAM • AWSが提供するサービスの1つ • アカウント内でさらに複数のアカウントを作成し、そ
れぞれ個別の権限を付与することが可能 -‐ 特定のS3バケットにのみアクセス可能など
• IAMでできること -‐ IAMアカウント単位でのアクセスコントロール
• 設定方法 -‐ アクセスポリシー言語(json)を記述する
このアイコンが 目印!
S3 バケットポリシー • S3のバケットレベルのでポリシーベースのアクセスコント
ロールを提供する
• ポリシーを定義できるのはバケット所有者のみ • バケットポリシーでできること
-‐ バケットのアクセスコントロール -‐ IAMアカウントレベルでのアクセスコントロール
• 設定方法 -‐アクセスポリシー言語(json)を 記述する
S3 ACL • バケット、オブジェクトに対するアクセスコントロールを提供す
る • バケットのACLをオブジェクトは継承しない • デフォルトで自分自身へのFULL_CONTROL権限が与えられる • 1アカウントにつき最大100個まで作成可能 • パーミッションの種類は5種類
( _ACP はアクセスコントロールリストへのアクセス権を表す) -‐ READ -‐ WRITE -‐ READ_ACP -‐ WRITE_ACP -‐ FULL_CONTROL
S3 ACL • ACLでできること
-‐ バケットのアクセスコントロール -‐ オブジェクトのアクセスコントロール
• 設定方法 -‐ 設定したいパーミッションを選択する
S3 のセキュリティ機能
• IAMポリシー • バケットポリシー • ACL
バケットポリシー vs ACL • ACL : 許可 or 何もしない • バケットポリシー : 許可 or 拒否 or 何もしない
バケットACL
オブジェクトACL
バケットポリシー
結果
許可 許可 拒否 失敗
許可 未設定 拒否 失敗
許可 許可 許可 成功
許可 未設定 許可 成功
許可 許可 未設定 成功
許可 未設定 未設定 失敗
バケットACL
オブジェクトACL
バケットポリシー
結果
未設定 許可 拒否 失敗
未設定 未設定 拒否 失敗
未設定 許可 許可 成功
未設定 未設定 許可 成功
未設定 許可 未設定 成功
未設定 未設定 未設定 失敗
バケットポリシー vs IAM • IAM : 許可 or 拒否 • バケットポリシー : 許可 or 拒否 or 何もしない
バケットポリシー IAM 結果
拒否 拒否 失敗
拒否 許可 失敗
許可 拒否 失敗
許可 許可 成功
未設定 拒否 失敗
未設定 許可 成功
S3 のセキュリティ機能
• やりたいことと設定するルール
やりたいこと 設定するルール
バケット全体で許可したい バケットポリシーで許可
オブジェクトを個別に許可したい オブジェクトACLで許可
特定個人または特定サーバのみ許可したい IAMで許可
S3 – Glacier連携機能
• S3にアップロードされたファイルをGlacierに保存し、料金を安くすることが可能
• そもそも「Glacier」って何?
Glacierとは?
• 低頻度のアクセスを想定したバックアップ/アーカイブ用のストレージ
• S3よりも安く、S3と同等の堅牢性を備えている • マネジメントコンソールからファイルのアップロード、ダウン
ロードはできない • Glacierに保存されたデータを
ダウンロードするには事前に申請が 必要で、実際にダウンロードできる ようになるまで3〜5時間かかる
このアイコンが目印! ← SS33と似てる!
S3 – Glacier連携機能
• S3に保存したデータを、一定期間後に自動でGlacierへと移動する -‐ 高い堅牢性を安く使える -‐ 設定できる期間の単位は1日 -‐ データ取り出しに時間がかかるのは変わらない
• マネジメントコンソールから操作可能になる
33〜55時間後に ダウンロード可能に
データ取得
データ保存 一定期間後にGGllaacciieerrへ
• S3に作成したバケットをWebサイトとして公開 • 静的なファイル(html、css、jsなど)のみ使用可能 -‐ phpやperlを使った動的コンテンツは不可
• S3でホスティングすることのメリット -‐ データが消える心配をしなくていい(高い堅牢性) -‐ サービスの停止が起こらない(高い可用性) -‐ 簡単に公開できる
• S3でホスティングすることのデメリット -‐ 動的コンテンツが動かない
S3 の静的Webサイトホスティング
• バケットを作成する -‐ バケット名は公開予定の独自ドメインと同じにする
• データをアップロードする • バケットポリシー、もしくはオブジェクトACLを設定し、データを
誰でも見れるようにする • バケットの「stasc website hossng」を有効にする
-‐ Index Document と Error Document を指定する • エンドポイントが作成されるのでそこにブラウザでアクセスし
て確認 -‐ [バケット名] .s3-‐website-‐[リージョン] .amazonaws.com
• 独自ドメインでアクセスする場合はエンドポイントにCNAMEでむける
S3 の静的Webサイトホスティング
S3 の静的Webサイトホスティング
今回はこれを aawwss--cclliiを使って行う!
aws-‐cliで S3 の静的Webサイトホスティング
• AWSを管理するための統合ツール • python製(ver 2.6〜) • pipを使用してインストール可能(Mac、Linux) $ pip install aws-‐cli
※ wwiinnddoowwssの場合はよくわからないのでMMaacc買ってください。
aws-‐cliで S3 の静的Webサイトホスティング
• バケット作成 $ aws s3 mb s3://[バケット名]
• データアップロード、ACL設定 $ echo 'Hello Festa!!' > index.html ; echo 'error!' > error.html $ aws s3 sync . "s3://[バケット名]/" -‐-‐acl public-‐read
• 「stasc website hossng」有効 $ aws s3 website "s3://[バケット名]/" \ -‐-‐index-‐document index.html -‐-‐error-‐document error.html
• エンドポイント確認 $ curl h4p://[バケット名].s3-‐website-‐ap-‐northeast-‐1.amazonaws.com/ $ curl h4p://[バケット名].s3-‐website-‐ap-‐northeast-‐1.amazonaws.com/hoge
時間があれば デモやる!
aws-‐cliで S3 の静的Webサイトホスティング
S3 まとめ
• S3は高い堅牢性、可用性を持ち、かつ低コスト。 • 高いセキュリティ機能もある。 • Webサーバとして使うことで、S3の高い堅牢性、可
用性をもったサービスが提供できる。 • AWSのさまざまサービスにも使用される中心的存
在。それだけ安定している。 • みなさまも使ってみてはいかがでしょうか?
ご清聴ありがとうございました。
AWSを支える S3の基本を学ぼう!
参考サイト
• h4p://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/Welcome.html
• h4p://dev.classmethod.jp/cloud/aws/s3-‐acl-‐wakewakame/ • h4p://blog.serverworks.co.jp/tech/2012/08/10/best-‐pracsces-‐for-‐
using-‐amazon-‐s3/ • h4p://dev.classmethod.jp/cloud/aws/amazon-‐s3-‐auto-‐archive-‐to-‐
glacier/ • h4p://www.slideshare.net/AmazonWebServicesJapan/aws-‐black-‐
bel4echwebinar2014s3public • h4p://dev.classmethod.jp/cloud/amazon-‐s3-‐object-‐expirason/