Amazon Glacier

Amazon Glacierとは

低頻度アクセスかつ長期保存を想定したストレージサービス

  • セキュアかつ堅牢性の高い超低価格ストレージサービス
  • テープ媒体などで保管するような大容量データを、安価で確実に長期保存する
  • データの取り出し回数は少ないが、必要時に確実にデータの取り出しが行える

Amazon Glacierの特徴

特徴は、「低コスト」「高い耐久性」「柔軟性」「セキュア」「シンプル」。

低コスト

  1. 初期投資不要
  2. 運用費不要
  3. 従量課金(格納・取り出し・転送)

高い耐久性

  1. 耐久性 99.999999999%(=S3と同様)
  2. 同一リージョン内で複数拠点への自動複製保存(=S3と同様)
  3. データのインテグリティ(整合性)チェックおよび自動復旧

柔軟性

  1. 格納容量無制限
  2. 保存期間制限なし
  3. いつでもデータの取り出し可能
  4. 保守切れ等によるデータ移行作業不要
  5. AWS INPORT/EXPORTにも対応

セキュア

  1. やりとりはすべてSSL通信
  2. 同一リージョン内のみでデータ保管
  3. 自動サーバサイド暗号化(AES256)
  4. IAMとの連携によるアクセス管理

シンプル

  1. APIによる制御
  2. キャパシティプランニング不要
  3. ハードウェア、ソフトウェアからの解放
  4. 3rd Party製品もサポート

重要用語集

  • Vault (ボルト)
    アーカイブ格納用コンテナ = 箱
    ・ 格納アーカイブ数の制限なし
    IAMによるアクセス制限指定可能
    ・ Vault毎にデフォルトのSNS通知設定可能
    Vault情報は「Management Console」または「API」で取得可能

 

  • Archive (アーカイブ)
    格納データファイル (ファイル, ZIP, TAR等)
    ・ アップロード時にシステム側でArchive IDを自動発行
    ・ 格納データの更新不可
    マルチパートアップロードに対応
      → ファイルを分割し、並列でアップロード処理を実施することで、アップロード時間の短縮が可能。100MB以上の場合は、マルチパートアップロード利用推奨

 

  • Inventory (インベントリ)
    Vault内に格納されたアーカイブ一覧情報
    JSONもしくはCSV形式でダウンロード可能
    ・ Retrieve Job経由でダウンロード可能
    ・ 情報は1日1回バッチにより自動更新

 

  • Retrieve Job
    アーカイブおよびインベントリ取り出し要求ジョブ
    ・ 非同期によるデータ取得
    ・ Retrieve Job実施後、ダウンロード準備完了まで3~5時間

 

  • Download
    Retrieveされたアーカイブもしくはインベントリのダウンロード処理
    ・ Retrieve Job完了後、24時間はダウンロード可能

 

その他機能

  ・ High Level API
    ファイルサイズを自動的に確認し、必要であればマルチアップロードを実施

  ・ Low Level API
    パラメータの個別設定が可能 (AccountID/マルチアップロードサイズ等)

  • Retrieve Jobの実行

  <アーカイブの取得要求>

  ・ アーカイブIDを指定してRetrieve Jobを実行
  ・ JobParameterのTypeに"archive-retrieval"を指定
  ・ SNS ARNを個別に指定可能
  ・ 戻り値より、JobIDを取得

 

  <Inventoryの取得要求>

  ・ Vault名もしくはアーカイブIDを指定してRetrieve Jobを実行
  ・ JobParameterのTypeに"inventory-retrieval"を指定
  ・ Formatを"CSV"もしくは"JSON"を指定(デフォルトはJSON)
  ・ SNS ARNを個別に指定可能
  ・ 戻り値より、JobIDを取得

  <Job実行状態確認>

  ・ Retrieve Jobの実行状態(InProgress/Succeeded/Failed)を取得可能
  ・ Vault名Job IDを指定して実行

Amazon S3とGlacierの違い

f:id:amipee210:20150904192431g:plain

 

Amazon S3

ブログでAWSを勉強してみようという試みで、記念すべき第1回のお題目は、「Amazon S3」です!

Amazon S3とは?

安価かつ高い耐久性を持つオンラインストレージサービス

後日更新するつもりですが、安価で耐久性を持つGlacierと違う点はオンラインストレージであるという点ですね。Glacierと比較して早くデータを取り出すことが出来ます。

特徴

EC2にマウントできて、安価かつほぼ無制限に使用できます。すばらしい。

  • 容量無制限 ※1ファイル最大5TBまで
  • 高い堅牢性 ※3箇所以上で自動複製
  • 安価なストレージ ※月額1GB/約4円
  • スケーラブルで安定した性能

利用用途

ある程度リアルタイム性が要求される、大容量のデータを保管することに向くみたい。

用語

  • バケット
    オブジェクトの保管場所。最大100個まで。名前はユニークにする必要あり。
  • オブジェクト
    S3に格納されるファイル。URLが付与される。
  • キー
    オブジェクトの格納URLパス。
  • アクセスコントロールリスト(ACL)
    バケットやオブジェクトのアクセス管理。

Amazon S3 データストレージの種類

  1. スタンダード
    3箇所以上にデータを複製。デフォルト。
  2. 冗長化ストレージ
    複製箇所を減らして低価格にしたもの。オブジェクト毎に指定可能。
  3. アーカイブ (Glacier)
    最も低価格だが、データの取り出しに時間がかかる。
    Lifecycle Managementで指定。取り出しはオブジェクト単位。

Multipart Upload機能

大容量オブジェクトの高速伝送機能
S3にアップロードする際に、ファイルを複数のチャンクに分割して並列アップロードを実施。ファイルが100MBを超える場合は、利用することが推奨される。

アクセス管理

さまざまな単位でアクセス制御ができるらしい。

  • ユーザーポリシー
    IAMユーザ(AWSのユーザ)に対して任意のバケットへのアクセス権限を付与
  • バケットポリシー
    全てのユーザに対して、任意のバケットへのGETリクエストを許可
  • ACL(アクセスコントロールリスト)
    バケット単位のACLとオブジェクト単位のACLが存在。
    優先度は下記の通り。
    ユーザー/バケットポリシー > オブジェクトACL > オブジェクトACL

 Webサイトホスティング機能

静的なWebサイトをS3のみでホスティング可能。

  • バケット単位で指定
    パブリックアクセスを許可するため、バケットポリシーで全ユーザにGET権限を付与
  • 独自ドメインの指定
    ドメイン名をバケット名として指定(www.example.com)
    ※通常はhttp://バケット名.s3-website-ap-northeast-1.amazon.com
  • リダイレクト機能
    任意のドメインにリダイレクト設定が可能
  • CORS(Cross-origin Resource Sharing)の設定
    異なるドメインからのS3アクセス時に利用
  • CloudFrontとの連携
    バケットポリシーを利用してCloudFrontからのHTTP/HTTPSリクエストのみを許可することも可能

その他の機能

  • バージョン管理機能
    オブジェクト更新時に前世代オブジェクトを自動的に保管
  • Lifecycle管理
    バケット内のオブジェクトに対して削除orアーカイブの自動設定が可能f:id:amipee210:20150821165748g:plain
  • アーカイブおよびリストア
    - アーカイブ
    オブジェクトのデータはGlacierに移動
    S3上のデータを削除することで、Glacier側のデータも削除される
    - リストア
    オブジェクト毎にリストア
  •  Notification機能
    バケットにてイベントが発生した際に、Amazon SNS, SQS, Lambdaに対して通知することでシームレスなシステム連携が可能
  • クロスリージョンレプリケーション
    設定のみで、異なるリージョン間のS3バケットオブジェクトのレプリケーションを実施
  • Logging
    バケット単位でバケットに対するアクセスログの出力設定が可能
  • Tag管理
    バケットに対してタグの指定が可能
  • メタデータ
    オブジェクト毎にメタデータが設定される

Amazon S3のTips

パフォーマンスの最適化

Amazon S3において、オブジェクトキーはアルファベット順に格納しています。すなわち、キー名によってそのキーが格納されるパーティションが決まります。よって、タイムスタンプやアルファベット順などの連続する名前を使用すると、特定のパーティションへのI/O能力がひっ迫してしまう可能性が増大します。

【解決策】 キー名の先頭をランダム値にすることでI/Oを分散する

・マルチパートアップロードの活用によるアップロードオペレーション(PUT)の高速化

・GETリクエストもRANGE GETを活用することで、マルチスレッド環境では高速にダウンロード可能

 

AWS Direct Connect経由でのS3アクセス

【課題】Direct Connectを利用してAWSに接続する場合、多くはPrivate ASを利用しVPCへ接続となるため、オンプレミス環境からS3への通信は、VPC内のEC2で構築したProxyサーバを経由するパターンが多い。

→ EC2の運用負荷と経由することでのオーバヘッドによるDirect Connectの回線スピードの有効活用に課題

Private AS(プライベートAS) とは?

AS番号とは、インターネットなどの大規模IPネットワーク内にある、各組織が保有・運用する自立したネットワーク(AS)を識別する番号。各国のNICによって管理・発行される番号で、日本ではJPNICが管理・発行を行っている。

 

AS番号は全世界で一意の番号である。2オクテット(16ビット)で表され、0~65535までの番号空間を持つ。このうち0と65535はICANNによって予約されており、64512~65534はプライベートAS番号とされている。プライベートAS番号は全世界で一意ではなく、ASの内部やインターネットに接続されていないネットワークでのみ使用できるAS番号である。

f:id:amipee210:20150821182117g:plain

【解決策】AWSからパブリックIPの割り当てを受け、オンプレミスルータ側のIPアドレスでNATさせることで、VPCを経由せずオンプレミス環境からDirect Connect回線を利用して直接S3と通信が可能

f:id:amipee210:20150902101202g:plain

 

Amazon S3の使いどころ

 

f:id:amipee210:20150902101848g:plain

f:id:amipee210:20150902101945g:plain

f:id:amipee210:20150902101849g:plain