AWSの仕組みがキーワードベースで理解できるようまとめてみた4

AWSの仕組みがキーワードベースで理解できるようまとめてみました。

1. EFS


Amazon Elastic File System の略でフルマネージドファイルサーバー機能です。

また、自動でスケーラブルされるので拡張するために容量の計算などする必要がなくなります。

EFSでは、標準ストレージクラスと低頻度アクセスストレージクラスが提供されており、使用頻度によってより効率的に低価格で利用することが出来ます。


NFSはNetwork File Systemの略でLinuxなどで利用されるファイル共有システムです。

NFSサーバを立てて、クライアントは公開されたディレクトリをマウントすることで、ネットワーク上のファイルシステムをローカルなファイルシステムと同等に操作することができます。


EC2 と EFS は、

EC2 : EFS = x : 1

で紐づけることができます。

EFSはNASのようなイメージ

2. EBS

Amazon EBS(Elastic Block Store)とは、Amazonが提供するクラウドサービスであるAWSのストレージサービスです。

「Elastic」とは「弾力がある・伸縮性がある」といった意味があり、用途に合わせて柔軟な使用ができることが特徴となっています。


データベース・アプリケーションなど様々なサービスに対応可能ですが、主に使用されるのは仮想マシンサービスであるEC2のストレージとしての用途です。

「アタッチ」と呼ばれる、EC2上の仮想マシンにEBSボリュームを割り当てる設定を行うことで、仮想マシンのストレージ管理を柔軟に行うことができます。

ストレージとは、かんたんにいえばデータを記録する場所のことで、代表的なストレージはHDDやSSDです。


EC2 と EBS は、

EC2 = EBS = 1 : x

で紐づけることができます。

EBS は外付けHDDのようなイメージ

3. Amazon EBS と Amazon EFSの違い

データの保存形式

EBS は「ブロックストレージ」というタイプであり、EC2 インスタンスにアタッチするためのボリュームを提供しています。

EFS は「ファイルストレージ」というタイプであり、Linux 等のOSでマウント可能なファイルシステムを提供しています。

ファイルストレージは、データをファイルやディレクトリといった形式で管理、保存するストレージです。

データを保存する際には、ファイル名や作成日、サイズ、データの種類などの限定的なメタデータが付与されます。

また、ファイルストレージではデータがファイルとして階層ごとに整理されているため、小中規模のデータ管理を行う際に簡単に扱えるというメリットがあります。



アクセス

基本的に EBS は1つの EC2 インスタンスにアタッチして使用するため、複数のインスタンスで同時に共有することはできません※。

※例外として、「特定リージョン」で「プロビジョンド IOPS io1 ボリューム」の場合、制限はあるものの最大16個までのインスタンスにアタッチすることが可能です。

(東京リージョンはまだ使用できない)

一方、EFS では最大数千の EC2 インスタンスからの同時アクセスが可能なストレージが提供されています。

また、EBS は同じアベイラビリティーゾーンにある EC2 インスタンスからのみアクセスできますが、EFS はオンプレミスサーバーからもアクセスすることが可能です。


データの可用性、耐久性

EBS はデータを単一のアベイラビリティーゾーンに冗長的に保存するのに対し、EFS ではデータを複数のアベイラビリティーゾーンに冗長的に保存するため、データの保護という観点では EFS の方が優れていると言えるでしょう。

ただしこれはあくまで一つの観点に基づいたもので、例えば EBS はスナップショットを利用することで容易にバックアップの作成が行えるため、どちらのサービスも高い可用性、耐久性を有しています。

4. Amazon S3とAmazon EBSの違い

最大の違いは、ストレージの種類にあります。

S3は「オブジェクトストレージ」、EBSは「ブロックストレージ」というデータの保存方法を取っているのです。

オブジェクトストレージは、データを「オブジェクト」という単位で保存します。

これは一般的にパソコンで使用されるファイルストレージとは異なり、フォルダの階層などを作らずにフラットに保存する方法です。

するとデータの移動や分散した保存がしやすくなり、データ量の増加にも対応できるようになります。

よって、S3は耐久性が高く大量のデータを保存しやすいのです。


一方で、EBSは「ブロックストレージ」という方式でデータを保存しています。

ブロックストレージでは、データを「ブロック」という固定された長さの単位に分割して管理します。

このブロックには番号が割り振られているため、特定のデータを書き換えたい場合はその番号をもとに検索することが可能です。

これによりデータへのアクセスが容易になり、処理速度が上がります。

よってEBSでは、特に処理速度を高速化したいデータの保存に適しているのです。


ユースケースの違い

まずS3は耐久性の高さと大容量データの扱いやすさから、バックアップデータの保存に適しています。

また、ライフサイクル機能を備えているため、定期的にデータを移動する場合にも最適です。

例えば、保存された画像データをAWSのほかのサービスを利用して自動的に分析し、その結果を特定の場所に格納するといったことができます。


一方でEBSは、データの処理が高速であるという特徴があります。

よって、アプリケーションで頻繁にアクセスするようなデータなど、書き換えの多いデータの保存に向いています。

具体的には仮想マシンに搭載するストレージや、データベースの保存先とすることです。

様々なボリュームタイプがあることからも、このような柔軟な対応を必要とする用途においてパフォーマンスを発揮することがわかります。

5. AWSのストレージまとめ

Amazon EFS は、Amazon コンピューティング (EC2、コンテナ、サーバーレス) サーバーおよびオンプレミスサーバーで使用するためのファイルストレージサービスです。

EFS にはファイルシステムインターフェイスとファイルシステムのアクセスセマンティクス (強い整合性やファイルのロックなど) が用意されており、最大数千の EC2 インスタンスからの同時アクセスが可能なストレージが提供されます。


Amazon EBS は、EC2 で使用するためのブロックレベルのストレージサービスです。

EBS は、単一の EC2 インスタンスから最も低いレイテンシーでデータにアクセスすることが求められるワークロードで性能を発揮します。

Amazon S3 は、オブジェクトストレージサービスです。

S3 では、インターネット API 経由でデータをどこからでも利用できます。

6. CloudFormation(cfn)

AWSの各種リソースを使えば、クラウド上に望むシステムを構築できます。

構築するには、ログイン後に、AWSのコンソールからリソースを選択し、必要ならタイプも選択する、名前を決めるといった作業を行います。

こうした作業は簡単ですが、もしシステムを10、20用意するとなると、いささか時間がかかります。

そこでAWSには、こうした設定の作業をJSONやYAML形式のテキストで記載することで、自動的に構築できるAWS CloudFormationというサービスがあります。


AWS CloudFormationは、AWSリソースを自動作成するサービスです。

どのリソースをどう設定して利用するかを記載したテンプレートと呼ばれる設計図(JSONやYAML形式のテキストファイル)に基づいて、AWSリソースを自動的に構築できます。

テンプレートがあれば、望むAWSリソースを容易に自動で、いくつでも準備できますので、環境構築の作業工数を大幅に削減できるのです。

またリソース構築でのミスをなくすこともできますし、誰が実行しても同じ結果を期待できます。


また、AWS CloudFormationは、自動でシステムを配備できることから、DR(ディザスタリカバリ、災害の復旧)としての利用が可能です。

東京リージョンで起動中のシステムがダウンした場合に、すぐさまAWS CloudFormationを利用して大阪リージョンに同じシステムを自動で立ち上げるといった設定も可能です。


テンプレートは自身で1から作成できますし、サンプルを利用してさらに工数を減らすこともできます。

AWS CloudFormationで扱えるリソースは基本AWS関連のものですが、カスタム リソースという手法を使うと、AWS CloudFormationがサポートしていないAWSリソースや、サードパーティーのリソースも管理できます。



サンプルテンプレートも豊富

AWS CloudFormationのテンプレートは、JSONやYAML形式のテキストファイルです。

そのためAWSの公式サイトやインターネット上には、いろいろなAWS CloudFormationのテンプレートがアップロードされています。

AWS公式サイトには「ストレージ用ローカル MySQL データベースを使って、1 つの Amazon EC2 インスタンスに WordPress をインストール、デプロイします」といったサンプルがあります。

またインターネットには、これらのサンプルを使って、テンプレートの書き方などの紹介も多数見られます。

サンプルをベースに、希望するシステム構成のテンプレートを用意すれば、テンプレート作成の手間も大きく減らせます。


AWS CloudFormationの料金

このように便利なAWS CloudFormationですが、利用料金はかかりません。

ただしAWS CloudFormationを利用して構築したシステム内のAWS各種リソースについてはそれぞれ料金がかかります。

無料なのは、AWSの各種リソースをテンプレートに沿ってプロビジョニングするまでの作業に対してです。

リソースが稼働すると、そこでは料金が発生します。


CloudFormationープロビジョニング

AWS CloudFormationはテンプレートに基づいて、AWSの各種リソースを利用できる状態に構築します。

ユーザーからの申請や要請によって、必要なリソースを必要な分だけ割り当ててくれて、すぐに使えるように準備する作業をプロビジョニング(Provisioning)と言います。

AWS CloudFormationの場合は「テンプレートを元にAWSリソースをプロビジョニングするサービス」と言うことができます。

プロビジョニングとは、もともとは通信業界で使われていた言葉で、携帯電話用アンテナ基地を携帯電話が利用できる状態にしておくという意味です。


CloudFormationーInfrastruct

7. CloudFront


CloudFrontーCDN

(Content Delivery Network)

コンテンツをスピーディーかつ効率的に配信できるようにしたネットワークのことです。

動画配信などでコンテンツの大容量化が進んでいく中でネットワークの負荷が高くなり、Webページがなかなか表示されない、コンテンツのダウンロードに時間がかかるといった問題を解決してくれます。

コンテンツの入っているオリジンサーバーへのアクセス集中を防ぐために、各ユーザーの地理的に近い場所(エッジ)にあるサーバーから配信されるイメージです。


CloudFrontーオブジェクト(Objects)

オブジェクトは、あなたがCloudFrontに届けて欲しいファイルです。

オブジェクトは通常、Webページ、画像、及びメディアファイルが含まれていますが、HTTP経由又はAdobe RTMP(アドビシステムズ社のFlash Media Serverで使用されるプロトコル)のいずれかで提供する事が出来ます。


CloudFrontーオリジンサーバー(Origin Server)

オリジンサーバーは、オリジナルとして定めたコンテンツが格納されているサーバーのことです。

EC2やS3、ELBなどをオリジンサーバーとして使用することができます。

オンプレミスのサーバーを使用することも可能です。

HTTP経由でコンテンツを提供している場合、オリジンサーバーは、Amazon S3のバケット又はHTTPサーバー、Webサーバーの何れかです。

HTTPサーバーはAmazon EC2インスタンス上、またはあなたが管理しているサーバー上で実行する事ができ、これらのサーバーは、カスタムオリジンとして知られています。

RTMPを使用してメディアファイルを提供している場合、オリジンサーバーは常にAmazon S3のバケットです。


CloudFrontーディストリビューション(Distributions)

オリジンサーバーでオブジェクトを保存した後、オブジェクトがどこにあるかをCloudFrontに伝える役目を持つディストリビューションを作成します。

ディストリビューションを作成すると、CloudFrontはあなたがオブジェクトを管理する為に使用する一意のドメイン名を提供します。

例えば、d111111abcdef8.cloudfront.netのような情報です。


ここで、オリジナルの情報として/images/image.jpgという画像を含む、myawsbucketと呼ばれているバケットを持っていると仮定します。

Amazon S3のバケットから直接画像を表示したい、Webページ上の画像を表示したいとなった場合、URLは以下の様になります。

http://myawsbucket.s3.amazonaws.com/images/image.jpg


もしCloudFrontから同様に参照したい場合は、以下のようになります。

http://d111111abcdef8.cloudfront.net/images/image.jpg


もし既にドメイン名(例: example.com)を持っている場合、CNAMEとしてドメイン名を10個まで指定する事が出来ます。

もし別のドメイン名example.comを追加した場合、画像のリンクに以下のURLを使用する事が出来ます。

http://www.example.com/images/image.jpg


作成可能なディストリビューションは以下の2タイプです。

ダウンロードディストリビューション(download distribution):HTTPまたはHTTPSを使用してコンテンツを配信します。


これを利用すると Amazon S3バケットとカスタムオリジンの組み合わせで最大10個まで、Webコンテンツにアクセスする為のCloudFrontの設定が行えます。

ストリーミングデ