search
LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

【AWS認定クラウドプラクティショナー資格】⑤ ストレージサービス

はじめに

今回は、「AWS ストレージサービス」の概要について勉強した内容を紹介します。

「S3」と「EBS」に絞って、その特徴をまとめていきます。

参考書籍

『AWS認定資格試験テキスト AWS認定クラウドプラクティショナー』
本記事は、本書の第5章に相当

項目

1.Amazon Elastic Block Store(EBS)
2.S3の特徴
3.S3のセキュリティ

1.Amazon Elastic Block Store(EBS)

Amazon Elastic Block Store (Amazon EBS) は、EC2 インスタンスで使用するためのブロックレベルのストレージボリュームを提供します。EBS ボリュームの動作は、未初期化のブロックデバイスに似ています。これらのボリュームは、デバイスとしてインスタンスにマウントできます。インスタンスにアタッチしたEBSボリュームは、インスタンスの有効期間とは無関係に存続するストレージボリュームとして公開されます。これらのボリューム上にファイルシステムを構築できます。または、これらのボリュームをブロックデバイス (ハードドライブなど) を使用する場合と同じ方法で使用できます。インスタンスにアタッチされているボリュームの設定は動的に変更できます。
データにすばやくアクセスする必要があり、データを長期に保持する必要がある場合は、Amazon EBSをお勧めします。EBSボリュームは、ファイルシステムの主要ストレージやデータベースとしての使用に特に適しています。また、きめ細かい更新が必要なアプリケーションや、rawで初期化されていないブロックレベルのストレージにアクセスする必要があるアプリケーションにも適しています。Amazon EBSは、ランダムな読み取りまたは書き込みに依存する、データベーススタイルのアプリケーションと、長時間の連続読み取りまたは書き込みを実行する、スループットが高いアプリケーションの、両方に適しています。
-AWSドキュメント・ユーザーガイドより

(1)EC2インスタンスのボリュームとして使用

EBSは、EC2インスタンスのルートボリューム、または、追加のボリュームとして使用します。

EBSが提供するストレージのことを「ボリューム」と言います。

EC2はAWS上に仮想サーバを作成するサービスです。EBSは、EC2インスタンス用に準備された仮想ディスクであり、低コストで永続的なストレージとして提供されています。

EC2インスタンスと同様、不要になればいつでも削除できます。

ざっくりと、EBSは、EC2インスタンスのデータを保管する重要な役割を持っているという認識で良いでしょう。

なお、EC2インスタンスにEBSボリュームを割り当てることを「アタッチ」と呼び、反対にEBSボリュームの割り当てを解除することを「デタッチ」と呼びます。

※「アタッチ」は、ITの分野では、システム上に対象を取り込んで"有効にする(使えるようにする)"動作や操作などを指す

(2)アベイラビリティゾーン内でレプリケート

「レプリケート」とは、同じネットワーク内、もしくは遠隔地にサーバーを設置し、リアルタイムにデータをコピーする技術のことです。

つまり、ハードウェア障害が発生しても、AZ内の複数サーバー間で自動的にレプリケートされるので、データが失われることはありません。

(3)ボリュームタイプの変更が可能

EBSには、「汎用SSD」「プロビジョンドIOPS SSD」「スループット最適化HDD」「Cold HDD」の4つのタイプがあります。

「汎用SSD」

EC2インスタンスが利用するデフォルトのEBSボリュームです。

コストと性能のバランスがよく、開発環境やテスト環境など、幅広い用途に利用されています。

しかし、最大で16.000IOPSで、かつ一定の性能を約束するわけではないようです。

※IOPSとは、1秒当たりにディスクが処理できるI/Oアクセスの数のこと

「プロビジョンドIOPS SSD」

最高レベルのパフォーマンスを提供するEBSストレージです。

「汎用SSD」を超える性能がほしい場合はこちらを選択することになるでしょう。

アクセス頻度が高く、ディスクI/Oの多いデータベースやアプリケーションなどに適しています。

プロビジョニングされたストレージ容量の他に、IOPS毎に費用がかかるため、他の種類のボリュームに比べて費用は割高に設定されています。

最大で64.000IPOSを指定できます。

※プロビジョニングとは、必要に応じてネットワークやコンピュータの設備などのリソースを提供できるよう予測し、準備しておくこと

「スループット最適化HDD」

SSDほどの性能を必要とせず、コストを節約したい場合はこちらを選択します。

ログ管理やストリーミング、ビッグデータ向けのデータストアなど、データセットやI/Oサイズが大きく、アクセス頻度の高いシステムに最適です。

「Cold HDD」

EBSボリュームタイプの中でも低コストなボリュームタイプです。

HDDはSSDを利用したボリュームと比べて大容量で連続したデータの保存に適しているため、低速でアクセス頻度が少ないものの、大容量なデータを格納する用途に適しています。

このストレージタイプは、EC2インスタンスのルートボリュームには使用できません。追加ボリュームならば大丈夫です。

これら4つのボリュームタイプは、使い始めた後でも変更可能です。

(4)容量の変更が可能

EBSは、確保しているストレージ容量に対して課金が発生します。

先述した通り、使い始めた後でも変更可能です。

つまり、最初から大容量を確保しておく必要はなく、必要に応じて追加していけば良いということです。

(5)高い耐久性のスナップショット

AZそのものが障害により使えなくなった場合、EBSも使えなくなります。

そういった場合、EBSのスナップショットを作成すると、S3の機能を使ってスナップショットが保存されます。

S3は、複数のAZの複数の施設に自動的に冗長化されます。

その耐久性はイレブンナイン(99.9999999999%)なので、EBSのスナップショットの耐久性もイレブンナインです。

(6)ボリュームの暗号化

EBSを設定する際、「暗号化」のチェック欄が出てくるそうです。

これにチェックを入れると、ボリュームが暗号化されます。スナップショットも暗号化されます。

これにより、EC2インスタンスからのデータの暗号化や複合化を自動的に行ってくれるようになるので、ユーザー側で何か他の設定をする必要はありません。

(7)永続的ストレージ

インスタンスのホストとは異なるハードウェアで管理しているため、インスタンスを停止しても、データは残ります。

インスタンスの状態にかかわらず、データが永続的に保存され続けるところが特徴です。

インスタンスのホストローカルのストレージを使用するものに「インスタンスストア」というものがあります。

これは、"一時的にデータを取り扱う"という特徴があり、EC2インスタンスが起動している間のみ、データを保持します。

インスタンスストアをセカンドボリュームとして使用しているEC2を停止すると、インスタンスストアに保持されているデータは消失します。

インスタンスストアをルートボリュームにすることができるAMIもありますが、その場合、起動したEC2インスタンスは停止することができません。

2.S3の特徴

Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。あらゆる規模や業界のお客様が、Amazon S3 を使用して、データレイク、ウェブサイト、モバイルアプリケーション、バックアップおよび復元、アーカイブ、エンタープライズアプリケーション、IoT デバイス、ビッグデータ分析など、広範なユースケースのデータを容量にかかわらず、保存して保護することができます。Amazon S3 には、特定のビジネス、組織、コンプライアンスの要件を満たすために、データへのアクセスを最適化、整理、設定できる管理機能があります。
-AWSドキュメント・ユーザーガイドより

(1)無制限のストレージ容量

S3では、保存容量を気にする必要はありません。

バケットというデータの入れ物さえ作っておけば、データを保存し始めることができます。

1つのファイルにつき、5TBまで保存できます。

(2)高い耐久性

リージョンを選択してバケットを作成し、データをオブジェクトとしてアプロードします。

そのオブジェクトは、1つのリージョン内の複数のAZにまたがって自動的に冗長化して保存されます。

※冗長化とは、システムの一部に何らかの障害が発生した場合に備えて、障害発生後でもシステム全体の機能を維持し続けられるように、予備装置を平常時からバックアップとして配置し運用しておくこと

先述した通り、S3の耐久性はイレブンナイン(99.999999999%)です。

(3)インターネット経由でアクセス

S3には、HTTP/HTTPSでアクセスします。

アクセス制限の下、世界中のどこからでもアクセス可能です。

マネジメントコンソールやCLI(コマンドライン)、SDK(ソフトウェアデベロップメントキット)、APIからもアクセス可能です。

3. S3のセキュリティ

(1)アクセス権限

S3で設定するアクセス権限には「アクセスコントロールリスト(ACL)」「バケットポリシー」「IAMポリシー」の3種類があります。

バケットには「ACL」と「バケットポリシー」、オブジェクトには「ACL」が設定できます。

「アクセスコントロールリスト(ACL)」は、他の特定のAWSアカウントにオブジェクトの一覧・書き込み・読み取り許可を与えたり、 また、誰にでも一覧・書き込み・読み取り許可を与えたりできます。

例えば、インターネット上で公開する動画をS3へアップロードします。

オブジェクトに対して、ACLで"読み取り許可"を与えるとしましょう。

すると、誰でもインターネット経由でアプロードした動画ファイルにアクセスできるようになるのです。

「バケットポリシー」では、ACLよりも詳細な設定をすることができます。

例えば、IPアドレス指定を外して、誰からでもバケット全体へアクセスできるように設定することも可能です。

HTML、CSS、JavaScript、画像、動画ファイルなどの静的なWebコンテンツを配置して、Webサイトとしてインターネット配信している例もあります。

3のバケットポリシーはデフォルトでは全拒否となっています。そのため、使うときは設定が必要です。

イメージ
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1621068192000",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::${ここにバケットの名前を入れる}"
        }
    ]
}

「IAMポリシー」は、S3へのアクセス剣を設定する際も使えます。

※ IAMポリシーとは、「どのAWSサービスの」、「どのリソースに対して」、「どんな操作を」、「許可するか(許可しないか)」を権限とし、利用者(IAMユーザーなど)に対して設定することができる定義のこと

ただ、同じアカウントでEC2とS3を設定したとしても、EC2からS3へのアクセスはできません。

S3のセキュリティは強固なので、EC2に認証情報を与える必要があります。

認証情報の与え方は二通りです。

①IAMユーザーのアクセスキー情報をEC2に設定する
②EC2にIAMロールを設定する

①は非推奨です。

なぜなら、アクセスキーIDとシークレットアクセスキーをユーザー側で管理することになるので、不正リスクが生じるからです。

もしトラブルが起こっても、ユーザーの責任となります。

②が推奨です。

IAMロールには、IAMポリシーをアタッチすることができます。それを設定すると、EC2からアクセスできるようになります。

(2)通信、保存データの暗号化

S3は、HTTP/HTTPSでアクセスすることが可能です。

アクセスする対象のエンドポイントは、バケット名、オブジェクト名によって決定されます。

バケット名を「test」にした場合、バケットにアクセスするためのエンドポイントは次のとおりです。

○仮想ホスト形式
http://test.s3.amazon.com
https://test.s3.amazon.com
○パス形式
http://s3-ap-northeast-1.amazonaws.com/test
https://s3-ap-northeast-1.amazonaws.com/test

オブジェクトにアクセスする場合は、エンドポイントURLの最後尾にオブジェクトのキーをつけます。

例えば、バケットのにアップロードしたindex.htmlにアクセスしたい場合、
https://s3-ap-northeast-1.amazonaws.com/index.htmlとなります。

(3)料金体系

S3の料金体系は、主に3つの要素があります。

①ストレージ料金

保存しているオブジェクトの容量に対しての料金です。

1ヶ月全体を通しての平均保存量で料金が算出されます。

「標準」「定頻度アクセス(標準IA)」「1ゾーン定頻度アクセス(1ゾーン1A)」「Amazon Glacier」の4つのクラスがあります。

「標準」は、デフォルトのストレージクラスです。

頻繁に利用されるオブジェクトや、静的Webコンテンツの配信などで使われます。

「定頻度アクセス(標準IA)」は、アクセス頻度が少ないオブジェクトを格納することができます。

ストレージ料金は、標準ストレージよりも安くはなりますが、リクエスト料金は高くなります。バックアップデータを保存する際に使われます。

「1ゾーン定頻度アクセス(1ゾーン1A)」は、アクセスする頻度が少なく、かつ、複数のAZに冗長化される可溶性を必要としないオブジェクトを保存する場合に使われます。

S3バケット以外にもデータの複製があるケースで使われます。

万が一AZが使えなくなったとしても問題ない場合の選択肢です。

「Amazon Glacier」は、単独のサービスとして使用できるアーカイブサービスです。

リアルタイムのアクセスはなくても、保存しておく必要があるデータが存在する場合、よく使われます。

アーカイブデータとして保存しておくことができます。

アップロードした日から起算して自動でストレージクラスを変更する「ライフサイクルポリシー」を設定することができます。

例えば、error.logファイルの保存について、30日間は標準ストレージに保存しておき、それ以降は定頻度アクセスに変更します。

またそこから30日後(初日から60日後)、Amazon Glacierに変更することで、error.logファイルをアーカイブすることもできます。

こういった工夫により、コスト効率をよくすることもできます。

②リクエスト料金

データをアップロードしたりダウンロードしたりするリクエストに対しての料金です。

③データ転送料金

リージョンの外にデータを転送した場合に発生する料金です。

インターネットからS3への転送には課金されません。

結論

アプリケーションからアクセスする頻度が高いデータはEBSに入れておいて、バックアップなどのデータをS3に置く構成にすればいい

まとめ

EBS

・EBSは、EC2インスタンスのデータを保管する重要な役割を持っている
・必要な時に必要な量を利用できる
・AZ内で自動的にレプリケートされる
・使い始めた後にオンラインでボリュームタイプを変更できる
・使い始めた後にオンラインでストレージ容量を増やすことができる
・スナップショットはS3の機能を使って保存される
・EBSの暗号化に対して、ユーザーによる追加の操作は必要ない
・EBSのデータは永続的、インスタンスストアは一時的

S3

・S3のオブジェクト容量は無制限
・ストレージ容量の確保・調達を気にすることなく開発に専念できる
・耐久性はイレブンナイン
・冗長化やバックをアップを気にする必要はない
・世界中のどこからでもアクセスできる(アクセス制限の下)
・S3バケットは、オブジェクトはデフォルトでプライベート
・アクセスコントロールリストで簡単にアクセス権限を設定できる
・バケットポリシーでより詳細にアクセス権限を設定できる
・EC2などのAWSリソースにS3へのアクセス権を設定する際はIAMロールを使用する
・HTTPSでアクセスできる
・保存データの暗号化は複数の方式から選択できる
・ストレージ料金はストレージクラスによりコスト効率を高めることができる
・リージョン外へのアウト通信のみ、データ転送料金がかかる

参考

【初心者】 まずはこれだけ押さえるべし!AWSの基本サービスって?

AWS EBSとは?8つの特徴とEBSボリュームについても解説

S3のバケットポリシー書き方まとめ

参考書籍

※ 『AWS認定資格試験テキスト AWS認定クラウドプラクティショナー』

Amazonはこちら

楽天はこちら

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0