お仕事

AWSクラウドプラクティショナー資格取得のための学習用備忘録(ストレージサービス)

 

メモ

仕事で前回のITパスポート資格に続き、スキルアップと今のPJで活かすためにAWSの資格を取得することにしたのでその勉強用の備忘録です。

まずは「クラウドプラクティショナー(AWS Certified Cloud Practitioner(CLF-C01))」から。

いつも何か勉強するときは基本的に書きながら覚えるのでここでアウトプットします。

有益な情報かどうかは不明(笑)

 

スポンサーリンク

EBS

 

EBSはAmazon Elastic Block Storeの略で、
EC2インスタンスにアタッチして使用するブロックストレージボリューム。次の特徴がある。

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

・AZ内でレプリケート

・ボリュームタイプの変更が可能

・容量の変更が可能

・高い耐久性のスナップショット

・ボリュームの暗号化

・永続的ストレージ

 

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

 

EBSはEC2インスタンスのルートボリューム(ブートボリューム)、
または追加のボリュームとして使用できる。
EC2インスタンスと同様、不要になればいつでも削除することができる。

 

★必要なときに必要な量を利用できる

 

AZ内でレプリケート

 

EBSは同じAZ内の複数サーバー間で自動的にレプリケートされる。
たとえハードウェア障害が発生してもデータが失われることを防ぐ。

 

★AZ内で自動的にレプリケートされる

 

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

 

EBSでは標準の汎用SSD以外に、プロビジョンドIOPS SSD、スループット最適化HDD、Cold HDDという
ボリュームタイプがある。

汎用SSDの性能は最大でも16000IOPSで、かつ一定の性能を約束するものではない。
IOPSは、1秒あたりにディスクが処理できるI/Oアクセスの数。
持続的で一定のIOPSが必要な場合や、16000を超えるIOPSが必要な場合は、プロビジョンドIOPS SSDを検討する。
プロビジョンドIOPS SSDは、最小のIOPSを指定することができる。
プロビジョンドIOPS SSDで指定できるIOPSの最大値は64000。

逆にSSDほどの性能を必要とせず、コストを節約したい場合は、スループット最適化HDD、
さらにアクセス頻度が低い場合はCold HDDを検討する。
スループット最適化HDDとCold HDDはルートボリューム(ブートボリューム)として使用することはできない。
追加のボリュームとして使用できる。
ボリュームタイプは使用を開始した後にも変更できる。
使い始めた後に需要やニーズが変わった場合は、ボリュームタイプを変更して対応できる。

 

★使い始めた後にオンラインでボリュームタイプを変更できる

 

容量の変更が可能

 

EBSは、確保しているストレージ容量に対して課金が発生する。
ストレージ容量は使用を開始した後にも増やすことができる。

最初から最大容量を確保しておかなくても、必要に応じてストレージ容量を増加させることができる。
ストレージ容量はオンラインでも増やせる。

 

★使い始めた後にオンラインでストレージ容量を増やすことができる。

 

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

 

EBSは同じAZの複数サーバー間で自動的にレプリケートされる。
もしもそのAZが使えなくなったときEBSも使えなくなる。

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

S3は複数のAZの複数の施設に自動的に冗長化される。
耐久性はイレブンナイン(99.999999999%)のため、EBSのスナップショットもイレブンナインの耐久性ということ。

 

★スナップショットはS3の機能を使って保存される(高い耐久性)

 

ボリュームの暗号化

 

EBSの暗号化を有効にすればボリュームが暗号化される。

 

ボリュームを暗号化すると、そのボリュームから作成されたスナップショットも暗号化される。
EC2インスタンスからのデータの暗号化/複合化は透過的に行われるため、
プログラムやユーザーから追加の操作を行う必要はない。

 

★EBSの暗号化に対して追加の操作は必要ない

 

永続的ストレージ

 

EBSはインスタンスのホストとは異なるハードウェアで管理されている。
インスタンスを一度停止して再度開始したときにも、EBSに保存したデータは残っている。
インスタンスの状態に関係なく永続的にデータが保存されている。

 

インスタンスストア

 

EBSに対して、インスタンスのホストローカルのストレージを使用するのがインスタンスストア。
インスタンスストアにはデータを一時的に扱うという特徴がある。
これはEC2インスタンスが起動している間のみ、データを保持しているという特徴。

インスタンスストアをセカンダリボリュームとして使用しているEC2インスタンスを停止すると、
インスタンスストアのデータは失われる。
インスタンスストアをルートボリューム(ブートボリューム)として起動するAMIもある。
その場合、起動したEC2インスタンスは停止することができない。

 

★EBSのデータは永続的、インスタンスストアは一時的

 

スポンサーリンク

S3

 

Amazon Simple Storage Serviceの略で、Sが3つ並ぶことからS3と呼ばれる。
インターネット対応の完全マネージド型のオブジェクトストレージ。

 

S3の特徴

 

S3には次のような特徴がある。

・無制限のストレージ容量

・高い耐久性

・インターネット経由でアクセス

S3を使用することで、ストレージの管理や冗長化、事前の容量を確保することを考えることなく、
アプリケーションやサービスの開発に注力できる。

 

無制限のストレージ容量

 

S3では、保存したいデータ容量を先に決めておく必要はない。
バケットというデータの入れ物を作れば、データを保存し始めることができる。
保存できるデータ容量は無制限。1つのファイルについては5TBまでという制限はあるが、
頻繁にアクセスする5TB以上のデータというのはまずないため、これは問題にはならない。

使っているストレージの空き容量が何%なのか、何GB残っているかなどを気にする必要はない。
容量が足りないからデータを削除しなければならない、といったことも起こらない。
ビジネスの成長に伴うストレージ容量の調達に悩まされることがなくなる。

 

★S3のオブジェクト容量は無制限

★ストレージ容量の確保/調達を気にすることなく開発に専念できる

 

高い耐久性

 

オンプレミスのデータストレージの場合は、ディスクの障害やファイルの破損に備えて、
バックアップを取得したり、ストレージの冗長化を行うなどの対策が要件に応じて必要。

S3では、リージョンを選択してバケットを作成し、データをオブジェクトとしてアップロードする。
そのオブジェクトは1つのリージョン内の複数のAZにまたがって、自動的に冗長化して保存される。

各AZは数十km離れた場所に位置する。
外的要因による障害が複数のAZで同時発生しないような地理的設計がなされている。
S3の耐久性はイレブンナインという、非常に高い堅牢性を実現するように設計されている。

 

★S3の冗長性はイレブンナイン

★冗長化やバックアップを意識することなく開発に専念できる

 

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

 

S3にはインターネット経由(HTTP/HTTPS)でアクセスする。
適切なアクセス権限のもと、世界中のどこからでもアクセスできる。
アクセスして使うことができる可用性は99.99%。
AWSの他のサービスがそうであるように、S3も、マネジメントコンソールからも、
AWS CLI、SDK、APIからもアクセスできる。

 

★APIは世界中のどこからでもアクセスできる

 

S3のセキュリティ

 

S3バケットは、作成した時点では、
作成したアカウントから許可されたユーザーやリソースからのアクセスのみを受け付けている。
これはデフォルトでプライベートであるということ。
必要に応じて特定のアカウント、IAMユーザー、AWSリソースにアクセス権限を設定する。
インターネット上で公開設定をすることもできる。

 

アクセス権限

 

S3側で設定するアクセス権限には以下の3種類がある。

・アクセスコントロールリスト(ACL)

・バケットポリシー

・IAMポリシー

バケットにはアクセスコントロールリストとバケットポリシーが設定できる。
オブジェクトにはアクセスコントロールリストが設定できる。
バケットポリシーで個別にオブジェクトを指定することもできる。

 

アクセスコントロールリスト(ACL)

アクセスコントロールリスト(ACL)では、主に以下のことが可能。

・他の特定のAWSアカウントにオブジェクトの一覧を許可

・他の特定のAWSアカウントにオブジェクトの書き込みを許可

・他の特定のAWSアカウントにオブジェクトの読み取りを許可

・誰にでもオブジェクトの一覧を許可

・誰にでもオブジェクトの書き込みを許可

・誰にでもオブジェクトの読み取りを許可

アクセスコントロールリストはバケットに対しても個別のオブジェクトに対しても設定できる。

 

例えばインターネット上で公開する動画を、S3へアプリケーションからアップロードする。
アップロードする際に、オブジェクトに対するACLで読み取り許可を設定する。
こうすることで、誰でもインターネット経由でこの動画ファイルにアクセスできるようになる。

 

バケットポリシー

アクセスコントロールリストでは、バケット単位、オブジェクト単位の読み取りや書き込みを許可する
シンプルなアクセス権限を設定できた。
もっと細かい設定が必要な場合に使用できるのが、バケットポリシー。

特定のIPアドレスからのアクセスを許可することができる。
IPアドレス指定を外して、誰からでもバケット全体へアクセスできるように設定することもできる。
S3バケットにHTML、CSS、Js、画像、動画ファイルなどの静的なWebコンテンツを配置して、
Webサイトとしてインターネットを配信している例も非常に多くある。

 

IAMポリシー

IAMユーザーに対してアクセス権を設定する他に、
AWSサービスにS3へのアクセス権を設定する際にもIAMポリシーが使える。
たとえば、EC2で動的に生成したHTMLをS3に書き込むPythonプログラムがあるとする。
boto3というPython用のAWS SDKを使ってローカルにあるtest.htmlをS3のバケットにアップロードしようとする。

しかし、このままではtest.htmlをS3に書き込むことはできない。
EC2がS3に対しての認証情報を持っていないためである。
同じアカウントで起動したEC2だからといってS3にそのままアクセスすることはできない。
S3は強固なセキュリティによって守られているため、許可したリソースしかアクセスできない。
認証情報をEC2に与える方法は2通り。

・IAMユーザーのアクセスキー情報をEC2に設定する(ユーザーがキーを管理しなければならないため非推奨)

・EC2にIAMロールを設定する

EC2にIAMロールを設定する方法を推奨。
IAMロールにはIAMポリシーをアタッチすることができる。
IAMポリシーをアタッチしたIAMロールを作成し、EC2に設定する。

IAMロールを設定した後、同じPythonプログラムを実行すると、test.htmlがアップロードされる。

 

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

 

通信中のデータの暗号化

S3には、インターネット経由でアクセスする。
HTTP/HTTPSでアクセスすることが可能。
アクセスする対象のエンドポイントは、バケット名、オブジェクト名によって決定される。
バケット名を「bucket」とした場合、バケットにアクセスするエンドポイントは次のようになる。

 

・仮想ホスト形式

http://bucket.s3.amazon.com

https://bucket.s3.amazon.com

・パス形式

http://s3-ap-northeast-1.amazonaws.com/bucket

https://s3-ap-northeast-1.amazonaws.com/bucket

 

仮想ホスト形式ではリージョンを省略することが可能。
HTTPSでアクセスすることによって通信が暗号化される。
オブジェクトにアクセスする場合は、バケットのエンドポイントURLの後ろにオブジェクトのキーを付ける。
例えば、bucketにアップロードしたsample.mp4にアクセスする場合は、
https://backet.s3.amazonaws.com/sample.mp4となる。

 

保存データの暗号化

S3に保存するデータの暗号化方法には、主に次の3種類がある。

1.S3のキーを使用したサーバーサイド暗号化

2.KMS(AWS上で暗号化のためのキーを作成・管理し、暗号化を制御)を使用した
サーバーサイド、またはクライアントサイド暗号化

3.顧客独自のキーを使用したサーバーサイド、またはクライアントサイド暗号化

暗号化をするかしないか、どの方法で暗号化をするかは顧客が選択できる。

 

★S3バケット、オブジェクトはデフォルトでプライベート

★アクセスコントロールリストで簡単にアクセス権を設定できる

★バケットポリシーでより詳細にアクセス権を設定できる

★EC2などのAWSリソースにS3へのアクセス権を設定する際はIAMロールを使用する

★HTTPSでアクセスできる

★保存データの暗号化は複数の方法から選択できる

 

S3の料金

 

S3の料金は主に次の3要素。

1.ストレージ料金

2.リクエスト料金

3.データ転送料金

 

1.ストレージ料金

 

保存しているオブジェクトに対しての料金。
1ヶ月全体を通しての平均保存量で料金が算出される。
リージョンによって料金が異なる。
ストレージクラスによっても料金が異なる。
次のストレージクラスがある。

・標準

・低頻度アクセス(標準IA)

・1ゾーン低頻度アクセス(1ゾーンIA)

・Amazon Glacier

 

標準

ストレージクラスを指定しないデフォルトのストレージクラス。
東京リージョンの料金は0.025USD/GB(最初の50TB)。
ユースケースの一例は、アプリケーションによって頻繁に利用されるオブジェクトや、静的Webコンテンツの配信。

 

低頻度アクセスストレージ(標準IA)

アクセスする頻度の少ないオブジェクトを格納することで、S3のトータルコストを下げることができる。
東京リージョンの料金は0.019USD/GB。

ストレージ料金は標準ストレージよりも安価になるが、リクエスト料金が標準ストレージよりも上がる。
ユースケースの一例は、バックアップデータ。
障害が発生しない限りアクセスすることはないため、アクセス頻度は低いといえる。
しかし、障害発生時には迅速かつ確実にアクセスできる必要があるため、
1ゾーン低頻度アクセスやGlacierよりも低頻度アクセスストレージの方が適していると言える。

 

1ゾーン低頻度アクセスストレージ(1ゾーンIA)

アクセスする頻度が少なく、かつ、複数のAZに冗長化させる可用性を必要としないオブジェクトを保存場合に使用する。
東京リージョンの料金は0.0152USD/GB。
ユースケースの一例は、複数リージョンにバックアップデータを保存する場合など、
該当のS3バケット以外にもデータの複製があるケース。
万が一対象のAZが使えなくなったとしても問題がない場合の選択肢。

 

Amazon Glacier

Amazon Glacierは単独のサービスとしても使用できるアーカイブサービス。
リアルタイムなアクセスは必要ないが、保存はしておかなければならないような、アーカイブデータを格納する。
東京リージョンの料金は0.005USD/GB。
ユースケースの一例は、規約によって保存年数が定められているデータなど。
アクセスすることはほとんどなくても削除はできないデータに最適。
オブジェクトにアクセスするときはいちど取り出しを行う必要がある。
取り出しにはオプションもあるが、標準取り出しには3時間から5時間を要する。
さらに低コストオプションのGlacier Deep Archiveもある。

 

ライフサイクルポリシー

S3では初回のアップロード時から各ストレージクラスを指定することもできる。
また、アップロードした日から起算して自動でストレージクラスを変更する
ライフサイクルポリシーを設定することもできる。

例では、EC2で稼働しているアプリケーションのエラーログファイルを1日でローテーションしている。
EC2(EBS)には当日のエラーログファイルのみを配置して書き込んでいる。
過去のエラーログファイルはS3に保存している。
S3へのアップロードから30日は、調査などのために参照する可能性があるので、標準ストレージを使用している。
以降30日はあまりアクセスすることはないが、緊急で調査が必要になる場合もあるため低頻度アクセスストレージを使用。60日が経過するとほとんど参照されなくなるが、会社の規定で1年間の保存が義務付けられているので
Glacierにアーカイブする。
そして1年が経過すると自動で削除する。
こうすることで不要なオブジェクトに保存コストがかかることを避けながら、コスト効率の良い使用ができる。

 

リクエスト料金

 

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

 

データ転送料金

 

リージョンの外にデータを転送した場合にのみ発生する。
リージョンによって異なる。
インターネットへ転送した場合と他リージョンへ転送した場合でも料金が異なる。

インターネットからS3へのデータ転送受信(イン)には課金がかからない。
また、リージョン外であっても、CloudFrontへの転送料金は課金対象外。

同じリージョン内のリソース(例えばEC2)とデータを転送したときは、
別のアカウントでも転生料金は発生しない。

 

★ストレージ料金はストレージクラスによりコスト効率を高めることができる

★ライフサイクルポリシーによりストレージクラスの変更を自動化できる

★リージョンの外へのアウト通信のみデータ転送料金が発生する

 

S3のユースケース

 

S3のユースケースは以下の通り。

・アプリケーションのデータ保存(Amazon Macieを使えば機密情報を自動検出)

・HTML、CSS、Js、画像、動画ファイルなどの静的コンテンツの配信

・データバックアップの保存

・ログデータ、センサーデータなどの保存

・ビッグデータの保存分析(Redshift(DWH)、Athena(SQLクエリ)、EMR(Hadoop他)

・クロスレプリケーションによるDR対策

 

その他のストレージサービス

 

その他のストレージサービスは以下が挙げられる。

・EFS:「Amazon Elastic FIle System」の略。
複数のEC2インスタンスでマウントして共有利用できるファイルストレージサービス。

・Storage Gateway:オンプレミスアプリケーションとAWSのストレージサービスを、
シームレスに接続して利用することができるゲートウェイサービス。

・Snowball:物理デバイスを使用して、ペタバイト級の大容量データ転送を行うことができるサービス。
主にオンプレミスからAWSへデータを移行する際に利用する。
エクサバイト級のデータ転送にはSnowmobileを使用する。

 

スポンサーリンク

まとめ

 

EBS

・必要な時に必要な量を利用できる

・AZ内で自動的にレプリケートされる

・使い始めた後にオンラインでボリュームタイプを変更できる

・使い始めた後にオンラインでストレージ容量を増やすことができる

・スナップショットはS3の機能を使って保存される(高い耐久性)

・EBSの暗号化に対して追加の操作は必要ない

・EBSのデータは永続的、インスタンスストアは一時的

S3の特徴

・S3のオブジェクト容量は無制限

・ストレージ容量の確保調達を気にすることなく開発に専念できる

・S3の耐久性はイレブンナイン(99.999999999%)

・冗長化やバックアップを意識することなく開発に専念できる

・S3は世界中のどこからでもアクセスできる

S3のセキュリティ

・S3バケット、オブジェクトはデフォルトでプライベート

・アクセスコントロールリストで簡単にアクセス権を設定できる

・バケットポリシーでより詳細にアクセス権を設定できる

・EC2などのAWSリソースにS3へのアクセス権を設定する際はIAMロールを使用する

・HTTPSでアクセスできる

・保存データの暗号化は複数の方法から選択できる

S3の料金

・ストレージ料金はストレージクラスによりコスト効率を高めることができる

・ライフサイクルポリシーによりストレージクラスの変更を自動化できる

・リージョンの外へのアウト通信のみデータ転送料金が発生する





-お仕事

© 2024 ポンサラの逆襲