第4回勉強会 はじめてのAWS JAWS-UG Japan IWATA AWSを使ってみよう ~ S3編~
12
インスタンスEC2
ストレージS3、EBS
データベースRDS
仮想ネットワークVPC
専用線回線DirectConnect
コンテンツ配信CloudFront
DNSRoute 53
監視CloudWatch
ロードバランシング
ELBAuto Scaling
低コストストレージGlasier
データウエアハウスサービス
RedShift
モバイルデバイスのプッシュサービス
SNS
デスクトップソリューションWorkSpaces
大量メール送信サービス
SES
メッセージキューSQS
オンプレミス環境との接続
Strage Gateway
ログ配信サービスCloudTrail
暗号化サービスCloudSearch
リソースコントロール
IAM
データベースDynamoDB
データベースSimpleDB
<サービス>
20
S3(Simple Storage Service)
インターネットのどこからでも安全にアクセス可能なストレージ
容量制限なし。1ファイル5TBまで
耐久性。 99.999999999%(イレブンナイン)※1万個のオブジェクト保存した場合の、障害による損失は1000万年かかる。
高いスケラビリティ
容量に依存しない。
安価な金額。※1TB/月 $0.0330/GB
21
S3の用語
バケット
・オブジェクトの格納場所・Globalでユニークな名前にする必要がある・最大100オブジェクト作成可能
オブジェクト・バケットに置くファイルでURLが紐づく・数に制限なし
オブジェクトキー・オブジェクトに付与される一意のキー
ACL・バケットとオブジェクトへのアクセスを管理する
アクセスコントロールリスト
22
Availability Zone#B
Availability Zone#A
Availability Zone#C
オンプレミス
AWS S3
Tokyo Region
S3の堅守性
インターネット
自動同期
S3のリージョン1.US Standard2.Oregon3.Northern
California4.Ireland5.Singapore 6.TOKYO7.Sydeny8.Sao Paulo9.Frankfurt
23
S3の利用想定
データ保存・分析用ストレージ・解析のためのデータ保管
データバックアップストレージ・ファイルサーバとして保存・拠点間のレプリケーション・サーバ/データベースバックアップ
コンテンツの保存と配信・静的コンテンツ
24
S3のデータストレージの選択
S3 スタンダードストレージ耐久性:99.999999999%
Glacier アーカイブストレージ耐久性:99.999999999%データの取り出しに時間がかかる。
低冗長化ストレージ(S3 RRSオプション)耐久性:99.99%
価格・利用頻度(高)
価格・利用頻(低)
31
Bucket名
hoge
オブジェクト名
Index.html
(ルート)
└ hoge/└index.html
S3の階層
S3は単純なKVS(Key-Value型データストア)になる。
Key(フルパス) Value(値)
/hoge/index.html test
34
操作 説明 その他
GET ファイルのダウンロード Range GET リクエストに対応
PUT ファイルのアップロード シングルPUT5GB
LIST ファイル一覧の情報を取得 1000オブジェクト情報可能
COPY オブジェクトのコピー シングルCOPY最大5GB
DELETE オブジェクトの削除 シングルDELETE最大1000オブジェクト
RESTORE アーカイブストレージにあるオブジェクトの取り出し
データの取り出し3-4時間RESTOREの時間を指定できる
オブジェクトに対するオペレーション
S3で実行できる操作の説明
35
• ブラウザからAWS管理コンソールからS3を操作可能
AWS管理
コンソール
• AWS CLI からコマンドラインでの操作AWS CLI
• AWSが各プログラミング用に調整したAPIでの操作
• 「Java」、「PHP」、「Ruby」、「Python」など。AWS SDK
サードパティツール
オペレーション実行ツール
S3を操作できる実行ツール
• Couldberry、Cyberduck等
※HTTP/HTTPSでS3で接続する。
36
S3の機能一覧
-アクセス管理-静的ウェブサイトホスティング-ログ記録-イベント通知-バージョニング-ライフサイクル-クロスリージョン レプリケーション-タグ管理-マルチパートアップロード機能-データの暗号化-Pre-Signed Object URL-RRSオプション-リクエスタ支払い
37
アクセス管理
S3のアクセス権の種類
ユーザポリシー
• IAM USERに対して、S3や複数のバケットに対してのアクセス権を付与
• JSON形式
バケットポリシー
• S3バケットに対してアクセス権を付与
• JSON形式
ACL• S3のバケット、オブジェクトのアクセス権限を付与。
• 簡易的なアクセス権を付与する場合に利用
デフォルトではOWNERに対してのアクセスのみ付与されている。
40
アクセス管理
3). ACLバッケット単位で設定するバッケットACLと、オブジェクト単位でACLを
設定するオブジェクトACLが存在する。
バケットACLはバケット内のすべてのオブジェクトに反映される。
オブジェクトACLはバケットACLよりも優先される。
ACLよりも、ユーザポリシー、バケットポリシーが優先される。
静的ウェブサイトホスティング
静的なWebサイトをS3で公開できる。
ファイルをアップロードして、公開するだけ!!
PHPなどの動的なファイルやデータベースは利用できない。
バケットを作成
独自ドメインを指定
リダイレクト機能
その他機能、連携
1). バケットを作成
バケット名の変更はできない。
バケット名は、3~63文字以内にする必要がある。
バケット名は、IPアドレスの形式(192.168.5.4など)にはできない。
バケット名は1つのラベルか、または複数のラベルをピリオドでつなげて構成する必要がある。
小文字の英文字、数字、およびハイフン(-)が利用できる。先頭、末尾には小文字の英数字を利用する。
43
バケット(www.hoge.com)
Amazon S3に保存されるあらゆるオブジェクト(ファイル)を置いておくための入れ物(バケツ)のこと。
静的ウェブサイトホスティング
44
バケット名に独自ドメインの利用もできる。
(バケット名例) www.example.com
証明書も利用できる。
デフォルトでワイルドカード証明書を保持している。
独自証明書を利用したい場合は、CloudFrontが必要。
S3Internet
CloudFront
S3のエンドポイントに対して、CNAMEを宛がう。
(CNAME例) www.example.com IN CNAMEwww.example.com.s3-website-ap-northeast-1.amazonaws.com
静的ウェブサイトホスティング
2). バケット時の注意
45
3). S3 エンドポイント(URL)
http://s3-ap-northeast-1.amazonaws.com/hoge.jp/hoge.jpg
http://hoge.jp.s3-ap-northeast-1.amazonaws.com/hoge.jpg
例: hoge.jpのバケット名を作成し、オブジェクト”hoge.jpg”を置いた場合
SSLの場合>
SSLのパスの指定の仕方に注意
https://s3-ap-northeast-1.amazonaws.com/hoge.jp/hoge.jpg
https://hoge.jp.s3-ap-northeast-1.amazonaws.com/hoge.jpg
静的ウェブサイトホスティング
エンドポイント
46
4). オブジェクト(Object)
-1つ以上のバケットに格納するデータ(ファイル)のこと。
オブジェクト名は任意に設定できる。
オブジェクト数や階層の制限はない。
オブジェクトの登録、変更、削除、切り取り、コピー、貼り付けができる。
オブジェクトのアップロード・ダウロードができる。
静的ウェブサイトホスティング
静的ウェブサイトホスティング
47
5). リダイレクト機能
・簡易リダイレクト機能バケットのウェブサイトエンドポイントへのリクエストをすべて別のホストにリダイレクトすることができる
・高度なリダイレクト機能バケットをウェブサイトホスティング用に設定する場合はXMLでルーティングルールを指定する。
48
静的ウェブサイトホスティング
6). CORS(Cross-Origin Resource Sharing)
Ajaxを利用して異なるドメインの情報を取得ができる。
オリジン
Amazon S3
Ajax通信
リクエスト
Index.html
ブラウザwww.hogehoge.jp
www.gehogeho.jp
www.hogehoge.jpを許可
CORS
静的ウェブサイトホスティング
49
7). CloudFrontとの連携
独自証明書を利用したい場合
バケットポリシーで、CloudFront経由のHTTP・HTTPSの通信のみを許可することも可能。
ログ記録
50
S3へのアクセスログの保存
API/SDKでの設定も可能
-リクエスタ、バケット名、リクエスト時刻、リクエストアクション、応答ステータス、およびエラーコード(存在する場合)
アクセスログの保存で課金が発生削除はいつでも可能アクセスログのアクセスに若干の課金が発生
51
イベント通知
S3でオブジェクトが作成されたり、上書きされた場合のアクションを通知することができる。
• HTTP PUTの操作により、オブジェクトが作成された時
s3:ObjectCreated:Put –
• HTTP POSTの操作により、オブジェクトが作成された時
s3:ObjectCreated:Post –
• S3コピーの操作により、オブジェクトが作成された時
s3:ObjectCreated:Copy –
• S3マルチパートアップロードが完了し、オブジェクトが作成された時
s3:ObjectCreated:CompleteMultipartUpload –
• オブジェクトが、上記のイベントもしくは将来的に追加されるイベントで作成された時
s3:ObjectCreated:* -
• 低冗長化で保存されているS3オブジェクトがロストした時
s3:ReducedRedundancyObjectLost –
主なイベントトリガー
52
バージョニング
オブジェクトの更新した際に、前の世代のオブジェクトを自動保管する機能
オブジェクトのバージョン管理下に置き、保存・検索・リストアが可能
バージョニング有効化時には、オブジェクトは削除されないため、ユーザのオペレーションミスに有効
PUT、POST、COPYの操作でオブジェクトに任意のバージョンIDが付与される。
課金はバージョニング分かかる。
ライフサイクルとの連携で世代管理が可能
53
ライフサイクル
バッケット内のオブジェクトに対して削除やアーカイブの自動設定が可能
最大1000個のライフサイクルルールが設定可能
bucket with objects Amazon Glacierworkers
Amazon S3アップロード 自動アーカイブ
自動削除
自動削除
アーカイブや削除の日程を指定することも可能
UTC0:00から順次処理が実行される
マルチパートアップロード機能
54
大容量オブジェクトの高速伝送が可能
S3にオブジェクトをアップロードする際にファイルを複数のチャンクに分割して並列アップロード
ファイルが100MBを超える場合利用を推奨
チャンクは5GB以下に設定
全てのチェンクがアップロードされるとS3側でオブジェクトに結合される。
最大5TBまで対応可能
AWS S3
AWS CLISDK Java SDK PHP SDK Ruby SDK Python
56
データの暗号化
サーバサイド暗号化 (Server Side Encryption - SSE)
-暗号化の種類
SSE-C: ユーザが提供した暗号化KEYを利用
SSE-KMS: Key Mangement Serviceの暗号化KEYを利用
SSE-S3: AWSが管理する暗号化KEYを利用
57
データの暗号化
2). サーバサイド暗号化 (Server Side Encryption - SSE)
暗号化、復号化(復号)、鍵管理の全てを自動化
オブジェクトの保存やコピーの際に暗号化可能。
暗号化データをGETする際は、キーを取り出して復号化し、
それを使ってデータを復号化する。
AES-256の暗号化アルゴリズムを利用
59
Pre-Signed Object URL(事前署名付き(期限付き)URL)
一時的に特定の方を対象にしたURLを作成することができる。
SDK Java SDK PHP SDK Ruby SDK Python
URL 生成機能は SDK でのみ利用可能
CloudFrontを経由して事前署名付きURLも設定可能
・CloudFront用のURLを発行
61
リクエスタ支払い
バケットをリクエスタ支払いバケットとして設定することができる。
リクエスタ支払いバケットの場合、リクエストおよびバケットからのデータのダウンロードにかかるコストは、所有者でなくリクエストを実行したリクエスタが支払います。
データの保管にかかるコストは常にバケット所有者が支払います。