クラウドを支えるs3の基本を学ぼう

52
AWSを支える S3の基本を学ぼう!

Upload: naoto-ishizawa

Post on 15-Dec-2014

902 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: クラウドを支えるS3の基本を学ぼう

AWSを支える    S3の基本を学ぼう!

Page 2: クラウドを支えるS3の基本を学ぼう

自己紹介

•  石澤直人(@youyo_)  •  ゆとり第一世代の27歳  •  株式会社ヘプタゴン  •  JAWS-­‐UG  青森支部  •  JAWS-­‐UG  青森支部の仙台支部  •  h4p://blog.youyo.info/  •  h4ps://www.facebook.com/naoto.ishizawa.94  

 

Page 3: クラウドを支えるS3の基本を学ぼう

ちょっとだけ  会社紹介を。。。

これ。

Page 4: クラウドを支えるS3の基本を学ぼう

•  株式会社ヘプタゴン

•  東北に本社を置く(たぶん)唯一のクラウド専業インテグレーター

•  クラウド上のインフラの設計/構築から保守/運用まで

•  フルマネージドでお客様はコンテンツに集中できる環境に

•  大規模な複数台からミニマムな構成までビジネスに合わせたインフラ設計

※ うちのコーポレートサイトはクソなので見てはいけない

会社紹介

僕。 社長。((立花氏))

Page 5: クラウドを支えるS3の基本を学ぼう

ピーク時数千アクセス/secのECインフラを担当

Page 6: クラウドを支えるS3の基本を学ぼう

S3とは?

Page 7: クラウドを支えるS3の基本を学ぼう

S3  とは?

•  正式名称 「Amazon  Simple  Storage  Service  」  •  以下のような特徴を持つを持つオンラインストレー

ジサービス   -­‐  高いスケーラビリティ   -­‐  高い信頼性・堅牢性   -­‐  セキュア   -­‐  高速   -­‐  低価格  

このアイコンが目印!

Page 8: クラウドを支えるS3の基本を学ぼう

S3  のよくある利用例

•  コンテンツの保存と配信  -­‐  メディア、エンターテイメントのコンテンツ  -­‐  ソフトウェアの配信  

•  大規模データ分析のストレージ、オリジナルデータ  -­‐  オンラインストレージ  -­‐  アプリケーションそのもののストレージ  

•  バックアップやディザスタリカバリ  -­‐  各サーバのバックアップ  -­‐  データベースバックアップ  -­‐  個人のバックアップ  

Page 9: クラウドを支えるS3の基本を学ぼう

こんなところでも S3  が使われてる!

•  DropBox  -­‐  データ保存先としてS3を利用  

•  CookPad  -­‐  画像配信ストレージのバックエンドとしてS3を利用  

•  HipChat、Qiita  -­‐  アップロードされたファイルの保存先としてS3を利用  

•  IO-­‐DATAのNAS  -­‐  S3連携機能があり、双方向同期が可能  

Page 10: クラウドを支えるS3の基本を学ぼう

S3  はAWSの中心的存在

SS33

EECC22

RReeddsshhiifftt EEBBSS

GGllaacciieerr

CClloouuddFFrroonntt

RRDDSS

Page 11: クラウドを支えるS3の基本を学ぼう

S3  の概要

データセンターB

東京リージョン

3カ所以上で自動複製。 保存するデータは自動暗号化も可能

データ(オブジェクト)を置くだけ! インフラ、電源等を気にしない! 容量は無制限! 世界中の8拠点(リージョン)から選択

データセンターA

データセンターC

バケット

使った分だけの 従量課金

Page 12: クラウドを支えるS3の基本を学ぼう

S3  の用語 •  バケット  

-­‐  オブジェクト置き場。最大100/アカウント。名前がユニークである必要がある。以下のような命名規則が存在する。  -­‐  3〜63文字以内で小文字の英文字、数字、ピリオド、ハイフンが使用可能  -­‐  先頭と末尾にピリオドは使用できない。ピリオドとハイフンは連続できない。  

•  オブジェクト  -­‐  S3に置くファイルの単位で、1URLが付与される。バケット内には無制限にオブジェクト設置可能。1オブジェクトのサイズは5TBまで。  

•  キー  -­‐  オブジェクト毎に付与される一意な文字列  

•  ACL  -­‐  アクセスコントロールリスト  

Page 13: クラウドを支えるS3の基本を学ぼう

S3  の構成

Amazon  S3

バケット

オブジェクト オブジェクト

バケット

オブジェクト オブジェクト

バケット

オブジェクト オブジェクト

Page 14: クラウドを支えるS3の基本を学ぼう

S3  の構成

Amazon  S3

heptagon

image/test.jpg hoge.png

hoge

css/test.css index.html

fuga

image.jpg hoge.png

Page 15: クラウドを支えるS3の基本を学ぼう

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

Page 16: クラウドを支えるS3の基本を学ぼう

S3  のストレージの種類

•  S3には2種類のストレージがある  -­‐  スタンダードストレージ  -­‐  低冗長化ストレージ  

Page 17: クラウドを支えるS3の基本を学ぼう

S3  スタンダードストレージ

•  デフォルトのストレージ  •  3カ所以上のデータセンターに自動複製される  •  同時に3カ所以上のデータセンターが消失しない限

りデータを失わない  •  障害検知とデータ修復が自動で行われる  •  99.999999999%の堅牢性と99.99%の可用性をもつ  

Page 18: クラウドを支えるS3の基本を学ぼう

S3  低冗長化ストレージ

•  reduce  redundancy  storage(RRS)  •  単一データセンターでのデータ損失を防ぐように設計  •  障害検知とデータ修復が自動で行われる  •  99.99%の堅牢性と99.99%の可用性をもつ  •  スタンダードに比べ20%ぐらい安い  

Page 19: クラウドを支えるS3の基本を学ぼう

S3  スタンダード  RRS  比較

堅牢性 損失オブジェクト数

スタンダード 99.999999999% ほぼ0

低冗長化 99.99% 100個

•  1,000,000オブジェクト保存した場合の損失数  

Page 20: クラウドを支えるS3の基本を学ぼう

S3  スタンダード  RRS  比較

•  スタンダードストレージと低冗長化ストレージ使い分け  

スタンダードストレージ 低冗長化ストレージ

使いどころ オリジナルの画像データ  解析に使用する元データ  消えると困るデータ

オリジナル画像から再作成可能なサムネイル画像  データ解析時に生成される一時ファイル  再生成可能なデータ

Page 21: クラウドを支えるS3の基本を学ぼう

S3  の料金

•  ストレージ容量  •  データ転送量  •  リクエスト数  

Page 22: クラウドを支える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

Page 23: クラウドを支えるS3の基本を学ぼう

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

Page 24: クラウドを支えるS3の基本を学ぼう

S3  の料金(リクエスト数)

•  リクエストの数と種類に応じて費用が発生する  

リクエストタイプ 料金

PUT、COPY、POST、LISTリクエスト $0.0047/1,000リクエスト

削除リクエスト 無料

GET及び他の全てのリクエスト $0.0037/10,000リクエスト

Page 25: クラウドを支えるS3の基本を学ぼう

S3の使い方  

Page 26: クラウドを支えるS3の基本を学ぼう

S3  の基本的な使い方

•  ファイルのPUT、GET、DELETE、LIST  

Page 27: クラウドを支えるS3の基本を学ぼう

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!

Page 28: クラウドを支えるS3の基本を学ぼう

S3  の機能

•  マルチパートアップロード  •  ライフサイクル機能  •  S3-­‐Glacier連携機能  •  セキュリティ機能  •  静的Webサイトホスティング機能  •  サーバアクセスログ  •  バージョニング  •  データ暗号化  •  Webページリダイレクト  

Page 29: クラウドを支えるS3の基本を学ぼう

マルチパートアップロード

•  巨大なオブジェクトを複数の  チャンクに分割してアップロード  -­‐  チャンクのアップロードが完了したら単一オブジェクトに結合  -­‐  5MB  <  チャンクサイズ  <  5GB  

•  SDKにはマルチパート機能が実装されているためすぐに利用可能  

•  簡易サスペンド/レジューム機能の実装も。  h4p://dev.classmethod.jp/cloud/aws/aws-­‐s3-­‐mulspart-­‐upload/  

オリジナルオブジェクト

複数のチャンクに分割

チャンク毎にアップロード

単一オブジェクトに結合

Page 30: クラウドを支えるS3の基本を学ぼう

ライフサイクル機能

•  保存されたオブジェクトに対して有効期限を設定する  •  バケット毎に設定  •  バケット単位、もしくは作成したルールに該当するオブジェクト

が対象になる  •  日付・期間で指定可能  •  基準になる時間はGMT  •  削除が実行されるのは翌日の0時  

 例)  [2014/04/01  10:00  GMT]  にオブジェクト作成されて、  ライフサイクルが3日の場合、  削除されるのは、[2014/04/05  00:00  GMT]

Page 31: クラウドを支えるS3の基本を学ぼう

S3  のセキュリティ機能

•  認証のないアクセスからはデータを確実に保護  •  オブジェクトは全てフルコントロール可能  •  特定ユーザーにのみ権限を与えることも可能  

Page 32: クラウドを支えるS3の基本を学ぼう

S3  のセキュリティ機能

•  認証のないアクセスからはデータを確実に保護  •  オブジェクトは全てフルコントロール可能  •  特定ユーザーにのみ権限を与えることも可能    -­‐  IAMポリシー  -­‐  バケットポリシー  -­‐  ACL  

Page 33: クラウドを支えるS3の基本を学ぼう

IAM •  AWSが提供するサービスの1つ  •  アカウント内でさらに複数のアカウントを作成し、そ

れぞれ個別の権限を付与することが可能  -­‐  特定のS3バケットにのみアクセス可能など  

•  IAMでできること  -­‐  IAMアカウント単位でのアクセスコントロール  

•  設定方法  -­‐  アクセスポリシー言語(json)を記述する  

このアイコンが 目印!

Page 34: クラウドを支えるS3の基本を学ぼう

S3  バケットポリシー •  S3のバケットレベルのでポリシーベースのアクセスコント

ロールを提供する

•  ポリシーを定義できるのはバケット所有者のみ  •  バケットポリシーでできること  

-­‐  バケットのアクセスコントロール  -­‐  IAMアカウントレベルでのアクセスコントロール  

•   設定方法  -­‐アクセスポリシー言語(json)を  記述する  

 

Page 35: クラウドを支えるS3の基本を学ぼう

S3  ACL •  バケット、オブジェクトに対するアクセスコントロールを提供す

る  •  バケットのACLをオブジェクトは継承しない  •  デフォルトで自分自身へのFULL_CONTROL権限が与えられる  •  1アカウントにつき最大100個まで作成可能  •  パーミッションの種類は5種類  

(  _ACP  はアクセスコントロールリストへのアクセス権を表す)  -­‐  READ  -­‐  WRITE  -­‐  READ_ACP  -­‐  WRITE_ACP  -­‐  FULL_CONTROL  

Page 36: クラウドを支えるS3の基本を学ぼう

S3  ACL •  ACLでできること  

-­‐  バケットのアクセスコントロール  -­‐  オブジェクトのアクセスコントロール  

•  設定方法  -­‐  設定したいパーミッションを選択する  

Page 37: クラウドを支えるS3の基本を学ぼう

S3  のセキュリティ機能

•  IAMポリシー  •  バケットポリシー  •  ACL  

Page 38: クラウドを支えるS3の基本を学ぼう

バケットポリシー vs  ACL •  ACL  :  許可  or  何もしない  •  バケットポリシー  :  許可  or  拒否  or  何もしない  

バケットACL

オブジェクトACL

バケットポリシー

結果

許可 許可 拒否 失敗

許可 未設定 拒否 失敗

許可 許可 許可 成功

許可 未設定 許可 成功

許可 許可 未設定 成功

許可 未設定 未設定 失敗

バケットACL

オブジェクトACL

バケットポリシー

結果

未設定 許可 拒否 失敗

未設定 未設定 拒否 失敗

未設定 許可 許可 成功

未設定 未設定 許可 成功

未設定 許可 未設定 成功

未設定 未設定 未設定 失敗

Page 39: クラウドを支えるS3の基本を学ぼう

バケットポリシー vs  IAM •  IAM  :  許可  or  拒否  •  バケットポリシー  :  許可  or  拒否  or  何もしない  

バケットポリシー IAM 結果

拒否 拒否 失敗

拒否 許可 失敗

許可 拒否 失敗

許可 許可 成功

未設定 拒否 失敗

未設定 許可 成功

Page 40: クラウドを支えるS3の基本を学ぼう

S3  のセキュリティ機能

•  やりたいことと設定するルール  

やりたいこと 設定するルール

バケット全体で許可したい バケットポリシーで許可

オブジェクトを個別に許可したい オブジェクトACLで許可

特定個人または特定サーバのみ許可したい IAMで許可

Page 41: クラウドを支えるS3の基本を学ぼう

S3  –  Glacier連携機能

•  S3にアップロードされたファイルをGlacierに保存し、料金を安くすることが可能  

•  そもそも「Glacier」って何?  

Page 42: クラウドを支えるS3の基本を学ぼう

Glacierとは?

•  低頻度のアクセスを想定したバックアップ/アーカイブ用のストレージ  

•  S3よりも安く、S3と同等の堅牢性を備えている  •  マネジメントコンソールからファイルのアップロード、ダウン

ロードはできない  •  Glacierに保存されたデータを  

ダウンロードするには事前に申請が  必要で、実際にダウンロードできる  ようになるまで3〜5時間かかる  

このアイコンが目印! ← SS33と似てる!

Page 43: クラウドを支えるS3の基本を学ぼう

S3  –  Glacier連携機能

•  S3に保存したデータを、一定期間後に自動でGlacierへと移動する  -­‐  高い堅牢性を安く使える  -­‐  設定できる期間の単位は1日  -­‐  データ取り出しに時間がかかるのは変わらない  

•  マネジメントコンソールから操作可能になる  

33〜55時間後に ダウンロード可能に

データ取得

データ保存 一定期間後にGGllaacciieerrへ

Page 44: クラウドを支えるS3の基本を学ぼう

•  S3に作成したバケットをWebサイトとして公開  •  静的なファイル(html、css、jsなど)のみ使用可能  -­‐  phpやperlを使った動的コンテンツは不可  

•  S3でホスティングすることのメリット  -­‐  データが消える心配をしなくていい(高い堅牢性)  -­‐  サービスの停止が起こらない(高い可用性)  -­‐  簡単に公開できる  

•  S3でホスティングすることのデメリット  -­‐  動的コンテンツが動かない  

S3  の静的Webサイトホスティング

Page 45: クラウドを支えるS3の基本を学ぼう

•  バケットを作成する  -­‐  バケット名は公開予定の独自ドメインと同じにする  

•  データをアップロードする  •  バケットポリシー、もしくはオブジェクトACLを設定し、データを

誰でも見れるようにする  •  バケットの「stasc  website  hossng」を有効にする  

-­‐  Index  Document  と  Error  Document  を指定する  •  エンドポイントが作成されるのでそこにブラウザでアクセスし

て確認  -­‐  [バケット名]  .s3-­‐website-­‐[リージョン]  .amazonaws.com  

•  独自ドメインでアクセスする場合はエンドポイントにCNAMEでむける  

S3  の静的Webサイトホスティング

Page 46: クラウドを支えるS3の基本を学ぼう

S3  の静的Webサイトホスティング

今回はこれを aawwss--cclliiを使って行う!

Page 47: クラウドを支えるS3の基本を学ぼう

aws-­‐cliで      S3  の静的Webサイトホスティング

•  AWSを管理するための統合ツール  •  python製(ver  2.6〜)  •  pipを使用してインストール可能(Mac、Linux)  $  pip  install  aws-­‐cli  

※ wwiinnddoowwssの場合はよくわからないのでMMaacc買ってください。

Page 48: クラウドを支えるS3の基本を学ぼう

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  

Page 49: クラウドを支えるS3の基本を学ぼう

時間があれば  デモやる!  

aws-­‐cliで      S3  の静的Webサイトホスティング

Page 50: クラウドを支えるS3の基本を学ぼう

S3  まとめ

•  S3は高い堅牢性、可用性を持ち、かつ低コスト。  •  高いセキュリティ機能もある。  •  Webサーバとして使うことで、S3の高い堅牢性、可

用性をもったサービスが提供できる。  •  AWSのさまざまサービスにも使用される中心的存

在。それだけ安定している。  •  みなさまも使ってみてはいかがでしょうか?  

Page 51: クラウドを支えるS3の基本を学ぼう

ご清聴ありがとうございました。  

AWSを支える    S3の基本を学ぼう!

Page 52: クラウドを支える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/