20120319 aws meister-reloaded-s3
TRANSCRIPT
AWSマイスターシリーズ Reloaded Amazon S3
2012年03月19日
大谷 晋平 (@shot6 ) ソリューションアーキテクト
アジェンダ
S3とは?
S3のコンセプト
S3の機能
S3をうまく使うためには
S3の利用例
まとめ
AWSサービス一覧
お客様のアプリケーション
ライブラリ & SDKs Java, PHP, .NET,
Python, Ruby
Web インターフェース
Management Console
IDE プラグイン
Eclipse
Visual Studio
デプロイと自動化 AWS Elastic Beanstalk AWS CloudFormation
認証 & 請求 AWS IAM
Identity Federation Consolidated Billing
モニタリング Amazon CloudWatch
スケーリング Auto Scale
ネットワーク&ルーティング Amazon VPC
Amazon Elastic LB Amazon Route 53
AWS Direct Connect
コンテンツ配信Amazon
CloudFront
メッセージ通知Amazon SNS
分散処理 Elastic MapReduce
メール配信 Amazon SES
コンピュータ処理 Amazon EC2
ストレージ
Amazon S3
Amazon EBS AWS Storage Gateway
データベース Amazon RDS
Amazon DynamoDB Amazon SimpleDB
Amazon Elasticache
AWS のグローバルなインフラ
キューイングAmazon SQS
AWSストレージサービスのゴール
お客様がデータを安心して預けられる、サービスの提供
データが安全に保管されている
データが取りたい時に常に取得可能
データを保存したい時に常に保存可能
データが誰がいつアクセス出来るかを完璧にコントロールできる
データ保存が低価格で実現できる
S3とは?
S3はWeb時代のストレージ
ユーザはデータを安全にどこからでも保存可能
AWSの主力サービスの1つ。2006年から開始
開発者が“Webスケール”なコンピューティングを可能にするよう設計された
高いスケーラビリティ
高い信頼性・堅牢性
セキュア
高速
低価格
Amazon S3は、データ保存の基盤
東京リージョン
3か所以上で 自動複製
S3
バケット
高い耐久性で データ失わない:
99.999999999%
世界中の7拠点から選択
データセンターA
データ置くだけ。インフラ、電源、
気にしない。 容量無制限。
データセンターB
データセンターC
ファイル(バイナリ、 テキスト、画像、動画)
保存するデータは、自動で暗号化する
ことも可能
安価な従量課金
例:1GB/月 – 約10円
S3の用語
バケット オブジェクト置場。最大100/アカウント。名前がユニークな必
要あり
オブジェクト S3に置くファイルでURLによるアドレスが付与。バケット内に
は無制限にオブジェクトを置くことが可能。1オブジェクトのサイズは5TBまで
キー オブジェクト毎に付与される一意なキー
ACL
アクセスコントロールリスト
S3のネームスペース
Amazon S3
バケット バケット
オブジェクト オブジェクト オブジェクト オブジェクト
バケット
オブジェクト オブジェクト
S3 –実例にあてはめてみる -
Amazon S3
mculver-images media.mydomain.com
Beach.jpg img1.jpg img2.jpg 2009/maui/sun.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
次の450TB $0.120
$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
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
データの暗号化
サーバサイド暗号化
クライアントサイド暗号化
サーバサイド暗号化
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(“現状ファイル"));
• マネージメントコンソールから実施する • GUIツールで実施する • コードで実施する
オブジェクトの期限付き保存
バケット単位でオブジェクトの生存期間を指定可能
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がある
S3
EC2 EBS
EMR Dynamo 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/gsg/
Amazon S3 Developer Guide
http://docs.amazonwebservices.com/AmazonS3/latest/dev/
Amazon Web Services Japan blog
http://aws.typepad.com/aws_japan/