AWS S3 バケットの解説

AWS S3 バケットの解説

AWS S3 バケットが単なるファンシーなクラウドホスト型ネットワーク接続ストレージ(NAS)であったら、このブログももっと短いものになり、苦労はないのですが、残念ながらそうはいきません。AWS S3 バケットは、本来そうあるべきほど「単純」ではないので、このような解説記事が必要になります。

AWS S3 はオブジェクトレベルのストレージサービスです。データの可用性、セキュリティ、スケーラビリティ、およびパフォーマンスに優れています。さらに、GUIとAPIの両方の形式で、充実した管理ツールと管理機能を備えています。第一級のユーザーとして開発者を想定しており、データの作成、複製、さらには消去までの責任がユーザーに委ねられます。では、どのように機能するのでしょうか?従来のNASや他のクラウド SaaS ストレージプロバイダとの違いは何でしょうか?

このブログで、AWS S3 バケットとは何か、他のAWSサービスとどう統合するか、他のストレージソリューションとはどう違うか、について解説してみたいと思います。

 

AWS S3 バケットとは何か?

AWS S3 を理解するには、まず重要な用語の意味するところをしっかり確認しておく必要があります。最初の用語は「バケット」です。バケットは、オブジェクトの論理コンテナです。従来のNASの用語で言うと「フォルダ」に相当するものですが、S3はファイルではなくオブジェクトを処理するので、区別が重要になります。

AWS S3 バケットは、組織内だけにとどまらない目的で使用できます。バケットレベルでアクセスコントロールを行うことができ、また、バケットはAWS名前空間の最高レベルです。そして、AWSの請求は集計されたバケットの使用量に基づいて行われます。

AWS S3 を理解するために重要な次の用語は「オブジェクト」です。従来のNASの用語を使うなら「ファイル」に相当するものですが、やはり意味合いは異なります。オブジェクトは、名前(キー)と値を含むデータ(「コンテンツ」とも呼ばれます)です。

情報セキュリティの観点から重要な点は、Amazon からはオブジェクト内のデータを見ることができず、メタデータを見ることができるという点です。メタデータには、最終更新日、サイズ、バージョン、暗号化関連の情報、その他のHTTP固有のメタデータなど、オブジェクト自体に関する一連の情報が含まれます。

オブジェクトの識別法も、S3に特徴的なものです。Amazon では、オブジェクトの識別に個々の「キー」を使用します。キーの名前はオブジェクトの作成時に指定し、キー名は、バケット内の各オブジェクトを一意に識別します。S3バケットはフォルダのように構造化されてはいませんが、キーの命名法が適切であれば、うまく体系立てて整理できます。

例えば、キー名を “Development/script.ps1” と指定すれば、バケット内の「Development」フォルダに「script.ps1」というファイルが作成されたという構造が類推できます。S3は、バックエンドの階層はフラットであっても、このようなタイプのキー名の “Development/” 部分をフォルダ相当と解釈することができます。APIからバケットをクエリする場合、この点を理解しておくことは重要です。

ここで取り上げておきたい、S3を理解するのに重要な最後の用語はAWSの「リージョン」です。この用語はクラウドデータが存在する地理的な場所を示すもので、AWSスペース全体で広く使用されます。S3では、レイテンシやコストを最小限に抑えるためにリージョンが重要になります。また、クレジットカード情報や個人データなど、コンプライアンス規制の対象になるデータを保存する場合、保存場所が規制されることもあります。

以上、用語を説明することで、S3の特徴をある程度つかんでいただけたと思います。では、S3はAWSエコシステム全体でどのように機能するのでしょうか?

AWS サービス全体での AWS S3 バケットの機能

Amazon は、Apple などと同様、自社のエコシステムを利用しているエンドユーザーにできる限りの便宜を図ります。Apple の場合、iPhone を使用すると、AirPods と自動的にペアリングされ、iMac ともシームレスに同期されます。Amazon でも、これと同じように、AWS サービスを追加すると、他のAWS サービスに統合されます。オブジェクトストレージはAWSのほぼすべてのアプリケーションにとって重要であり、S3は統合の要としての機能を果たします。

CloudFormation テンプレートをS3に保存することができ、Lambda を作成して実行したり、トリガーに基づいてコンピューティングリソースをデプロイしたりできます。SNSやSES通知を行うために、テンプレートをS3に保存することもできます。クラウドアーキテクチャでS3を利用するアプリケーションは数多くありますが、具体的な例を少し挙げておきます。

S3でよく使われるアプリケーションに、Webサイトから簡単に取得できる方法でWebファイルを保存したり、静的ページをS3のオブジェクトにルーティングしたりするものがあります。S3 を、AWSのドメインネームシステム (DNS) サービスであるRoute 53と組み合わせることで、S3でホストされている静的なWebページにWebトラフィックをルーティングできます。そうすることで、静的ファイルに提供するために専用の計算リソースを使用する必要がなくなります。

AWSサービスでS3を利用して、ストレージのテナント間またはリージョン間のレプリケーションを支援することもできます。ソースバケットでオブジェクトを追加、削除、または変更したときに、AWSの監視ソリューションである CloudWatch でエントリを生成し、その後、SNS通知をトリガーして、Lambda にレプリケーションバケットがソースと同期していることを確認するように促すように設定することができます。データが最新である必要があるアプリケーションを展開するときなどは特に、このような利用法は有益です。

AWSを利用したサーバーレス・コンピューティングで、従来のサーバーベースのコンピューティングよりもコストが抑えられ、高い拡張性が得られます。AWSサービスとS3を組み合わせることで、信頼性が高くスケーラブルなストレージをサポートするサーバーレスアーキテクチャが構築できます。

AWS S3 と他の SaaS ストレージとの違い

AWS S3 の特徴としてまず言えることは、信頼性が高く、開発者にとって使いやすいシステムになっている点です。S3は、この点で、Azure Storage などの他の SaaS ストレージソリューションから抜きんでています。Azure Storage も、S3も、どちらも必要なだけのデータを格納できますが、一意のキーを使用してデータを迅速かつ確実に取得する機能において、S3に勝るものはありません。

S3は第一級のユーザーとして開発者を想定しているので、バケット、キー、オブジェクトはすべて、プログラムで作成、変更、取得、および削除できます。Azure や Google Cloud のストレージソリューションにはプログラム可能なオプションがありますが、AWS S3には、さらに多くのAPI機能が用意されています。特にオブジェクトのバージョン管理の機能は充実しています。

AWS S3と他の SaaS ストレージとのもう1つの違いは、大規模なデータ転送のためのプロトコルやソリューションが使用可能かどうかです。一般のクラウドストレージプロバイダはデフォルトでHTTPオブジェクト転送をサポートしますが、S3は BitTorrent プロトコルもサポートしており、データのピアツーピアストリーミングを分散できます。バルクデータ転送に関しては、AWS Snowball を使用して、ペタバイト単位のデータをクラウドから迅速かつ確実に転送することもできます。

S3と他の SaaS ストレージとの究極的な差別化要因は、データをどのように有効活用できるかという点にあります。AWSは、移動するデータに最適なソリューションです。

まとめ

AWS S3 バケットについて説明しました。AWS S3は、ネットワーク接続ストレージのちょっとファンシーなバージョンというだけにはとどまらず、クラウドネイティブアプリケーションにデータを組み込むための非常にスケーラブルで信頼性の高い方法です。

S3を他の Amazon サービスと組み合わせることで、様々な堅牢なソリューションスイートを作成できます。開発者を第一級のユーザーと想定し、開発者のための使いやすさを追求しているので、ストレージを作成または管理するためにGUIを使う必要さえなく、シンプルに機能します。


Comments
Comments are disabled in preview mode.
Loading animation