AWSマイスターシリーズ
Reloaded
Amazon S3

       2012年03月19日
       大谷 晋平 (@shot6 )
       ソリューションアーキテクト
アジェンダ

S3とは?
S3のコンセプト
S3の機能
S3をうまく使うためには
S3の利用例
まとめ
AWSサービス一覧
                             お客様のアプリケーション

 ライブラリ & SDKs                                   IDE プラグイン                デプロイと自動化
                          Web インターフェース
  Java, PHP, .NET,                                  Eclipse            AWS Elastic Beanstalk
    Python, Ruby          Management Console                           AWS CloudFormation
                                                 Visual Studio


                                                                     ネットワーク&ルーティング
    認証 & 請求                                                               Amazon VPC
      AWS IAM                モニタリング              スケーリング
                                                                        Amazon Elastic LB
 Identity Federation      Amazon CloudWatch      Auto Scale
                                                                        Amazon Route 53
 Consolidated Billing                                                  AWS Direct Connect


 コンテンツ配信
                        メッセージ通知         キューイング                分散処理                メール配信
   Amazon
                        Amazon SNS      Amazon SQS      Elastic MapReduce        Amazon SES
  CloudFront

                                         ストレージ                          データベース
  コンピュータ処理                               Amazon S3
                                                                        Amazon RDS
                                                                     Amazon DynamoDB
       Amazon EC2                       Amazon EBS                    Amazon SimpleDB
                                     AWS Storage Gateway             Amazon Elasticache


                             AWS のグローバルなインフラ
AWSストレージサービスのゴール
お客様がデータを安心して預けられる、
サービスの提供
 データが安全に保管されている
 データが取りたい時に常に取得可能
 データを保存したい時に常に保存可能
 データが誰がいつアクセス出来るかを完璧
  にコントロールできる
 データ保存が低価格で実現できる
S3とは?
S3はWeb時代のストレージ
ユーザはデータを安全にどこからでも保存可能
AWSの主力サービスの1つ。2006年から開始
開発者が“Webスケール”なコンピューティング
を可能にするよう設計された
    高いスケーラビリティ
    高い信頼性・堅牢性
    セキュア
    高速
    低価格
Amazon S3は、データ保存の基盤
           S3        世界中の7拠点から選択

           東京リージョン
データ置くだけ。
インフラ、電源、                              保存するデータは、
 気にしない。                               自動で暗号化する
 容量無制限。                                 ことも可能
                データセンターA
                           データセンターB
           バケット
                              3か所以上で
                              自動複製
                  データセンターC

                                        高い耐久性で
                    安価な従量課金            データ失わない:
                                      99.999999999%
  ファイル(バイナリ、      例:1GB/月 – 約10円
  テキスト、画像、動画)
S3の用語
 バケット
  オブジェクト置場。最大100/アカウント。名前がユニークな必
   要あり
 オブジェクト
  S3に置くファイルでURLによるアドレスが付与。バケット内に
   は無制限にオブジェクトを置くことが可能。1オブジェクトのサ
   イズは5TBまで
 キー
  オブジェクト毎に付与される一意なキー
 ACL
  アクセスコントロールリスト
S3のネームスペース


                Amazon S3


    バケット                         バケット


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




                     バケット


            オブジェクト              オブジェクト
S3 –実例にあてはめてみる -
                       Amazon S3

    mculver-images                 media.mydomain.com

Beach.jpg   2009/maui/sun.jpg      img1.jpg    img2.jpg

                       public.blueorigin.com

              Installer.msi           img/pic1.jpg
S3のコンセプト
Durable(堅牢であること)
Available (いつでも利用可能であること)
Scalable (スケールすること)
Secure (安全であること)
Fast (高速に動くこと)
Simple (シンプルに使えること)
Cost Effective (低コストであること)
Durable(堅牢であること)
ファイルを失わない設計
  データを3箇所以上にレプリケーション
  障害検知とデータ修復
  2006年サービス開始以来データロストなし
99.999999999%の堅牢性を誇る
  3つ以上同時にDCが消失しない限りデータ
   を失わない
Available(常に利用可能なこと)
常に利用可能なように設計
  99.9%可用性SLA、実際はほぼ100%
計画停止無し
全世界からどの地域でもインターネット
経由で利用可能
  異なる8つのリージョンから選択
Scalable(スケールすること)
論理的には無限にスケールする
どれだけのファイルでも保存可能
  1バイトから1PBまでいくらでも保存可能
  1つのファイルサイズは最大5TBまで
Secure(安全であること)
全ての通信はSSL暗号化
認証・認可機能を持つ
  ACLベース/ポリシーベース
  ユーザアクセスコントロール
暗号化機能を持つ
  サーバサイド/クライアントサイド暗号化
ログ機能
認定・認証の取得
Fast(高速であること)
ピーク時最大50万RPS
常に安定したレイテンシ
世界8か所にリージョン展開
  最も近い場所を利用可能
専用線で直結も可能
Simple(シンプルに使えること)
ファイルのPUT/GET/DELETE/LIST
  これだけ。とってもシンプル
  データサイズも数も気にしなくてよい
サードパーティツールでFTPライクに利用
SDKで様々な言語からすぐに利用可能
PutObjectRequest putObjectRequest =
  new PutObjectRequest(bucketName, key, file);

PutObjectResult result = this.client.putObject(putObjectRequest);
Cost Effective(低コストなこと)
 従量課金で使った分だけお支払い
 初期費用もいらない
 コストは下げ続けている
  2012年2月に13%値下げ
 ストレージ      旧 (GB / 月)   新 (GB / 月)
 最初の1TB     $0.150       $0.130
 次の49TB     $0.135
                         $0.115

            $0.120
 次の450TB                 $0.100

 次の500TB    $0.105       $0.095
 次の4000TB   $0.090       $0.085
 5000TB以上   $0.065       $0.060
S3のコンセプト
Durable(堅牢であること)
Available (いつでも利用可能であること)
Scalable (スケールすること)
Secure (安全であること)
Fast (高速に動くこと)
Simple (シンプルに使えること)
Cost Effective (低コストであること)
S3の機能
 マルチパートアップロード
 Webサイト機能
 バージョニング
 サーバアクセスログ
 S3セキュリティ機能
 データの暗号化
 オブジェクトの期限付き保存
S3マルチパートアップロード

巨大なオブジェクトを複数のチャン
クに分割してアップロード
 各チャンク < 5GB
 チャンクがアップロードされたら、
  単一オブジェクトに結合
  • 自動で結合する場合
  • 自分で分割→結合
S3 Webサイト機能
 静的なWebサイトのホスティングをS3で!
  ファイルをアップロードして、Website機能をON!
S3バージョニング
全てのオブジェクトのバージョン管理下におき保存、検索、
リストアが可能。バージョニング中はオブジェクトは削除さ
れない。
S3でよくみる光景はユーザアクションによるデータ消失。
こういったアプリケーションエラーから重要なデータを保護
する。ただし課金はバージョニングの分、かかる
S3サーバアクセスロギング

S3バケットへS3のアクセスログを保存
  デフォルトでは出力しない
API/SDKで設定可能
アクセスログのデリバリではチャージしていない
  ログの保存ではチャージ。ただしいつでも削除可能
  アクセスログへのアクセスについては若干のチャージ
S3の認証機構

S3を含む全AWSサービスでセキュリティは最優先事項
認証のないアクセスからはデータは確実に保護
オブジェクトは全てフルコントロール可能
特定ユーザに対して権限を与えることも勿論可能

How?
  AWS Identity and Access Management(IAM) ポリシー
  バケットポリシー
  ACL
AWS IAM

 アカウント内で複数ユーザを作成し、セキュリティクレデン
 シャルや権限を付与する事が可能
  S3のバケットにオブジェクトのPUT/LIST/GETなど
 詳細は第4回セミナーにて!
 IAMで出来る事:
  ユーザレベルでのコントロール
    • S3に対してのお客様要件にあわせた操作の制御
 アクセスポリシー言語を記述する
  JSON format
S3バケットポリシー
S3バケットレベルのポリシーベースのコントロール
バケットオーナーだけが適用可能
  バケットレベルでのAllow/Deny
  バケット内のオブジェクトの権限のDeny
  バケットオーナーがオブジェクトオーナーだった場合のみオブ
   ジェクトに適切な権限を与える
アクセスポリシー言語を記述する
  JSON format
バケットポリシーの一例
例:
  ユーザ(1-22-333-4444, 3-55-678-9100)に
   “mybucket” (arn:aws:s3:::mybucket/*“,)というバケットに
   対してGETリクエストの発行を許可
     { "Version":"2008-10-17",
          "Id":"aaaa-bbbb-cccc-dddd",
          "Statement" : [
                { "Effect":"Allow",
                   "Sid":"1",
                   "Principal" : {
                       "AWS":["1-22-333-4444","3-55-678-9100"]
                    },
                    "Action":["s3:GetObject*"],
                    "Resource":"arn:aws:s3:::mybucket/*",
                }
          ]
     }
S3 Access Control List
 バケットからオブジェクトへのコントロール
 バケットのACLをオブジェクトは継承しない
 作成と適用はいつでも可能
 100個ACLは作成可能:
     Owner
     Email
     Any AWS account
     Anyone
 パーミッション:
     READ – Object or bucket
     WRITE – Create, overwrite, delete objects in bucket
     READ_ACP – Read ACL for bucket or object
     WRITE_ACP – Overwrite ACL for bucket or object
     FULL_CONTROL – All of the above
データの暗号化

サーバサイド暗号化
クライアントサイド暗号化
サーバサイド暗号化
 • マネージメントコンソールから実施する
 • GUIツールで実施する
 • コードで実施する
AmazonS3Client client = new AmazonS3Client(credentials);
client.setEndpoint("s3-ap-northeast-1.amazonaws.com");
PutObjectRequest putRequest = new PutObjectRequest(
      "shot6jp", “S3に置くファイル名", new File(“実際のファイル"));
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setServerSideEncryption(
      ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
putRequest.setMetadata(objectMetadata);
PutObjectResult result = client.putObject(putRequest);
クライアントサイド暗号化
   • マネージメントコンソールから実施する
   • GUIツールで実施する
   • コードで実施する
KeyPairGenerator generator =
    KeyPairGenerator.getInstance("RSA");
generator.initialize(512);
KeyPair keyPair = generator.generateKeyPair();
EncryptionMaterials encryptionMaterials =
                              new EncryptionMaterials(keyPair);
AmazonS3EncryptionClient client =
   new AmazonS3EncryptionClient(credentials, encryptionMaterials);
client.setEndpoint("s3-ap-northeast-1.amazonaws.com");

PutObjectResult ret = client.putObject(
    “バケット名”, “S3上のファイル名”, new File(“現状ファイル"));
オブジェクトの期限付き保存

バケット単位でオブジェクトの生存
期間を指定可能
 Prefix単位
 日付で指定可能




             http://bit.ly/A9dE0b
S3を上手に使うには?
最近AWSブログを書きました。
S3をうまく使うコツ(パフォーマンス)
大前提:ほとんどのケースでは普通に使っても
らえばいいだけ。
大量にオブジェクトを保存したり、取得したり
する場合のみコツが必要
  キー名はとても大事。キー名の先頭を散らす
  • 先頭2、3をハッシュ値にするだけで十分ス
    ケールする
  S3のパーティション分割
  当然バケットが違えば更にスケール
S3をうまく使うコツ
秒間数百以上のPUTをする場合には、エラーコ
ードに注意
  503が返ってきたらクライアント側でも送信側で
   も少し軽減する(エクスポネンシャルバックオフ)
S3のよくある利用例
コンテンツの保存と配信
  メディア・エンターテイメントのコンテンツ
  ソフトウェアの配信
大規模データ分析のストレージ・データオリジナル
  オンラインストレージ
  アプリケーションそのもののストレージ
バックアップやディザスタリカバリ。低価格かつ安心の
テープの代替
  サーバのバックアップ
  個人的なバックアップ
    • 複数端末での共有
5000万ユーザーを持つファイル共有サービス
Amazon S3の上で構築
S3は、99.999999999%の耐久性
European Space Agency

データ配信用の衛星写真およびデータをS3に保存
ESRIN: center of the European Space Agency for
the Earth Observation Programs (*)
  地球の衛星写真を生成し保存
  EUの政府団体やNGOなどのデータ配信の元




            (*) Source : http://www.esa.int/esaMI/ESRIN_SITE/index.html
Oracle Secure Cloud
BackupでDBのデータもS3
         へ保存
Amazon.comの事例
テープバックアップからS3へ切替
Amazon.comの事例
テープバックアップからS3へ切替
高速なバックアップ・リカバリ
  以前:テープでは10-15時間
  現在:S3で2.5時間で3.8TBリカバリ可能
貴重な人材を別のところで活用
 テープは壊れるのと、維持するのが高価
AWS自体もユーザ
AWSサービスの中心にS3がある

       EC2
                  EBS
  …
                         …
             S3
  …
      EMR
                  Dyna   …
                   mo
                   DB
S3のサードパーティツール

様々なサードパーティツールが存在する
自分が使っているものを紹介
  CloudBerry
  TND
S3を通じて実現したいこと
お客様がデータを安心して預けられる、
サービスの提供
 S3上のデータは常に安全に保管
 S3内データはいつでも取得可能
 S3内データを常に保存可能
 S3内へのデータアクセスは完璧にコント
  ロールできる
 データ保存が低価格で実現できる
参考文献
Amazon S3
  http://aws.amazon.com/jp/s3/
Amazon S3 Getting Started Guide
  http://docs.amazonwebservices.com/AmazonS3/latest/gs
   g/
Amazon S3 Developer Guide
  http://docs.amazonwebservices.com/AmazonS3/latest/de
   v/
Amazon Web Services Japan blog
  http://aws.typepad.com/aws_japan/

20120319 aws meister-reloaded-s3