ブロックストレージ、ファイルストレージとは何が違う?――第3のストレージ形態「オブジェクトストレージ」超入門:AWSで学ぶクラウド時代のサーバ&ストレージ基礎知識(6)
これまであまり物理的なサーバとストレージに触れてこなかった方を対象に、AWSを用いてサーバとストレージの基礎知識を解説する連載。第6回は、「ブロックストレージ」「ファイルストレージ」に次ぐ第3のストレージ形態である「オブジェクトストレージ」を詳しく解説します。
本連載「AWSで学ぶクラウド時代のサーバ&ストレージ基礎知識」は、これまで仮想マシン(Virtual Machine:VM)は使っていたけれど、物理的なサーバに触れてこなかったエンジニアやサーバ管理者、情報システム部門担当者(情シス)などを対象に、サーバとストレージの基礎知識を「Amazon Web Services」(AWS)の操作を例に解説しています。
本連載は全7回の予定で、各回は下記のテーマで基礎知識を解説して、テーマに関連するAWSのサービスを紹介していきます。
- 第1回:サーバ
- 第2回:ブロックストレージ
- 第3回:仮想化
- 第4回:サーバ運用に必要な技術
- 第5回:ファイルストレージ
- 第6回:オブジェクトストレージ
- 第7回:ストレージのデータ保護
連載6回目となる今回は「オブジェクトストレージ」をテーマに、オブジェクトストレージの基礎とAWSにおけるオブジェクトストレージサービスについて解説します。
AWSにおけるオブジェクトストレージサービスといえば「Amazon S3」(Simple Storage Service)が挙げられますが、どのような仕組みで動いているのか、読者の皆さんはご存じでしょうか? 今回はオブジェクトストレージをより深く理解していただけるように、Amazon S3とオンプレミスのオブジェクトストレージを比較しながらオブジェクトストレージの概要やアーキテクチャ、機能を紹介していきます。
そもそも「オブジェクトストレージ」って何?
オブジェクトストレージでは、「オブジェクト」と呼ばれる単位でデータを保存、管理しています。テキストや画像、動画などのユーザーデータに対し、一意のオブジェクトIDを割り振り、メタデータとセットで管理することで、ファイルシステムのような階層構造を持たない非構造化されたレイアウトでデータを保存します。データへのアクセスにはHTTPやHTTPSを使用し、REST(Representational State Transfer) APIを使用してデータの取得などをリクエストします。
オブジェクトストレージは一意のオブジェクトIDによってデータを管理するため、データの整合性を取りやすく、スケーラビリティも高いため、データアーカイブなどの用途によく使用されています。
オブジェクトストレージは、2000年代初頭から主にEMC(2015年にDell Technologiesが買収)やCleversafe(2015年にIBMが買収)といったベンダーによって開発されてきました。2006年にAmazon S3がリリースされてオブジェクトストレージの認知度が高まると、その後も「OpenStack Swift」などのようなクラウドオブジェクトストレージがリリースされていきました。多くのオブジェクトストレージの中でもAmazon S3の利用度は非常に高く、その他のクラウドおよびオンプレミスストレージの多くはAmazon S3との互換性を持つようになっていきます。現在、多くのオブジェクトストレージはAmazon S3 APIを搭載しており、Amazon S3と同等の機能が使用可能になっています。
本稿では、オブジェクトストレージのアーキテクチャや構成コンポーネント、ユースケースについて詳しく解説していきます。
「オブジェクト」とは
オブジェクトは、オブジェクトストレージにおけるデータの格納形式であり、ファイルストレージにおける「ファイル」に相当します。オブジェクトは、「ユーザーデータ」(テキスト、動画、画像など)と、「メタデータ」で構成され、ファイルと同様に「データ属性」(保管ポリシー、アクセスパターンなど)を持ちます。
「メタデータ」とは
メタデータは、サイズや日付、所有権などの情報を含む管理データです。ファイルでも作成日や作成者などのメタデータは扱いますが、オブジェクトではデータの種類や保存期間、コピー回数など、より多くのメタデータを扱います。以下の表にAmazon S3で使用されるメタデータの一例を示します。
メタデータ | 説明 |
---|---|
Date | 現在の日付と時刻を表す |
Cache-Control | キャッシュポリシーを表す |
Content-Length | バイト単位でオブジェクトのサイズを表す |
Content-Type | オブジェクトのタイプを表す |
Last-Modified | オブジェクトの作成日または最終更新日を表す |
VersionId | オブジェクトのバージョンを示す |
Amazon S3で扱われるメタデータの例 |
この他にも、暗号化の有無を表すものや、チェックサムのアルゴリズムを表すものなど、さまざまなメタデータが割り当てられています。これらのデータによって、目的のオブジェクトを検索したり、抽出したりするなどの操作が可能となり、データの管理性が向上します。
オンプレミスのオブジェクトストレージでは、「メタデータノード」と呼ばれるサーバがメタデータを管理しています。メタデータノードはそれぞれのオブジェクトに固有の「オブジェクトID」を付与し、各オブジェクトを一意に特定できるようにします。
「オブジェクトID」とは
オブジェクトIDは、各オブジェクトに一意に付与されるIDです。Amazon S3では「オブジェクトキー」とも呼ばれます。オブジェクトストレージでは、このIDを用いて各オブジェクトにアクセスします。
オブジェクトIDは、各オブジェクトの内容などからハッシュ関数などのアルゴリズムを用いて生成されます。これにより、ファイルパスがなくてもストレージ内で各オブジェクトを一意に特定できるため、階層構造のないフラットなストレージ構造を実現します。
「バケット」について
オブジェクトストレージにおいて、オブジェクトを保存する最小単位の入れ物としてストレージを論理的に割り当てたものを「バケット」と呼びます。クラウドストレージではバケット名はDNS(Domain Name System)に登録され、バケットおよびオブジェクトへのアクセスやリクエスト時に使用されるため、基本的にはグローバルで一意である必要があります。オンプレミス環境では多くの場合、クラスタなど同一システム上で一意であれば、バケットを持つサーバ、ストレージの名前とバケット名でバケットにアクセスできます。
本連載第5回で紹介したファイルストレージでは、サーバなどのクライアントにNFS(Network File System)でマウントしたり、SMB(Server Message Block)で共有フォルダにアクセスしたりすることで、ファイルへのアクセスを実現していました。
オブジェクトストレージでは、HTTPまたはHTTPSを使用して、「http(s)://<バケット名>.<サーバ名>」(またはhttp(s)://<サーバ名>/<バケット名>)のような形式でURLを指定することで、バケットへのアクセスが可能になります。
さらに、「http(s)://<バケット名>.<サーバ名>/<オブジェクトID>」と続けることで、オブジェクトへのアクセスが可能です。
「http(s)://<バケット名>.<サーバ名>」のような形式を「仮想ホスト形式」、「http(s)://<サーバ名>/<バケット名>」のような形式を「パス形式」と呼びます。現在は、ルーティングの遅延軽減や最新のセキュリティ対応において優れている仮想ホスト形式が主流になりつつあります。パス形式は一部では2025年現在も使用されていますが、レガシーな方式として非推奨化、廃止の方向に向かっています。
オブジェクトストレージのアーキテクチャ
オブジェクトストレージは一般的に、メタデータやオブジェクトIDを管理するメタデータノードと、実際のユーザーデータの格納先となるストレージノード(ストレージデバイス)から構成されます。以下の図がオブジェクトストレージの構成イメージになります。
オブジェクトストレージは「分散型スケールアウトアーキテクチャ」を採用しており、容量を拡張したい場合はストレージノードのみの拡張、性能を向上させたい場合はメタデータノードのみの拡張、というように柔軟な拡張が可能です。この特徴によってオブジェクトストレージは、高いスケーラビリティを実現しています。
メタデータノードの働き
オンプレミスのオブジェクトストレージでは、実際にデータを格納するストレージデバイスとは別に、「メタデータノード」がメタデータやオブジェクトIDを管理したり、ストレージデバイスを管理したりします。
メタデータノードの働きは各ストレージベンダーによって多少の違いはあるものの、以下のようなものが代表的です。
働き | 説明 |
---|---|
構成管理 | オブジェクトストレージに搭載されているディスクやノードのトポロジー情報などを管理する |
データ格納/取得 | クライアントから受け取ったオブジェクトをディスクなどのストレージデバイスに格納する。また、クライアントからの要求に応じてオブジェクトを取得する |
メタデータ管理 | オブジェクトのメタデータを管理する |
オブジェクトID管理 | ユーザーデータの内容からハッシュ関数などのアルゴリズムを用いてオブジェクトIDを生成する。また、IDを管理して各オブジェクトへのアクセスを維持する |
メタデータノードの主な働き |
オブジェクトストレージの利用シーン
オブジェクトストレージは階層構造を持たず、メタデータを活用してデータを管理できます。そのため、一般的には以下のような場面で活用されます。
SaaSアプリ、Webサイト開発
REST APIやHTTPを使用したデータアクセスを提供するため、SaaS(Software as a Service)アプリケーションやWebサイトのデータストアとして利用されます。
データのアーカイブ
オブジェクトストレージはスケーラビリティが高いため、大量データの長期保存に適しています。また、複雑な階層構造を使用せずオブジェクトIDによって単一のフラットなアドレス空間でデータを管理するため、データの検索、取得が比較的容易です。これらの特徴により、オブジェクトストレージはデータのアーカイブに使用されています。
データ分析、生成AI向けのデータレイク
大規模なデータを単一のアドレス空間に格納可能なオブジェクトストレージは、オブジェクトIDやメタデータによって柔軟にデータ検索が可能な点や、APIによるデータアクセスが可能な点から、データ分析やRAG(Retrieval Augmented Generation)などにおけるデータソースの保管場所に適しています。
オブジェクトストレージのデータ保護
ファイルストレージやブロックストレージでは、「RAID」(Redundant Array of Independent Disks)や「スナップショット」といったような仕組み、機能を使ってデータを保護しています。オブジェクトストレージではこれらの仕組みではなく、「Erasure Coding」(イレイジャーコーディング)や「バージョニング」「オブジェクトロック(WORM)」などの仕組み、機能を使用します。
Erasure Coding
Erasure Codingは、データを複数の分割データに分解し、「Erasure Code」(イレイジャーコード)と呼ばれるパリティデータを生成して、複数のディスクに分割データとErasure Codeを分散配置することで、データを保護する仕組みです。これにより、ストレージノード障害やデータの損失が発生した場合でもデータを再構成することが可能になります。
Erasure Codeの生成個数とデータの分割個数は自由に設定可能で、ストレージ容量の節約のためにErasure Codeの個数を減らしたり、冗長性を向上させるために個数を増やしたりするなど、柔軟なデータ保護が可能です。
上図では、オブジェクトを12分割し、さらに4つのErasure Codeを生成しています。この場合、「分割されたデータ+Erasure Codeの個数(16個)」のうち、もともとのオブジェクトの分割数(12個)の分割データまたはErasure Codeが残っていればオブジェクトの復旧が可能なため、4本までのディスク障害に対応できることになります。
レプリケーションやRAIDと比較すると、Erasure Codeの生成やデータの分散配置が必要なためより大きな演算能力が求められるものの、柔軟な構成が可能であることや分散配置によって耐障害性を確保しやすいことなどから、オブジェクトストレージに適したデータ保護手法といえます。
バージョニング
バージョニングは、バケット内にオブジェクトの複数のバージョンを保持する機能です。バージョニング機能を利用している環境では、オブジェクトの内容を上書きしたり、削除したりすると、新しいバージョンとしてオブジェクトが保存されます。これにより、データを誤って上書きしてしまった場合や削除してしまった場合でも、任意のバージョンのオブジェクトを復旧することが可能です。
オブジェクトロック(WORM)
オブジェクトロックは、オブジェクトに対して保持期間を設定することで、期間中はそのオブジェクトに対するユーザーからの上書きや削除操作など、オブジェクトの変更操作ができないようにする機能です。実装はベンダーによって異なるものの、多くの場合、オブジェクトロックが有効なオブジェクトに対しては管理者でも変更操作ができません。
この仕組みは、一般的には「WORM」(Write-Only-Read-Many)と呼ばれますが、Amazon S3準拠のオブジェクトストレージでは、オブジェクトロックという名称を用いることが多いです。WORMとは、名前の通り、一度書き込まれたデータを変更/削除させないという仕組みで、オブジェクトストレージだけでなく、多くのストレージ製品に取り入れられています。
この仕組みは、誤操作による事故やサイバー攻撃による権限の奪取に対して特に有効です。バージョニング機能を使用していた場合でも、誤操作や悪意を持ったユーザーによる攻撃でバージョンが完全削除されてしまった場合にはデータ復旧が難しくなります。オブジェクトロックを設定していれば、誤操作や攻撃からデータを保護できます。
Amazon S3
オンプレミスのオブジェクトストレージにはここまでご紹介した以外にもさまざまな要素がありますが、ここからはAmazon S3についてオンプレミスとの比較を交えながらご説明します。
Amazon S3は、AWSが提供するオブジェクトストレージサービスです。現在はオブジェクトストレージの代表格ともいえるサービスであり、多くのオブジェクトストレージやユニファイドストレージにAmazon S3へのアクセスを可能にするAPI(Amazon S3 API)が搭載されています。
Amazon S3は、幅広いストレージクラスを用いることでパフォーマンスとストレージコストを最適化しやすい点や、Amazon S3 APIの提供によってさまざまな環境からアクセスしやすい点、オブジェクトアクセスの管理機能によってセキュリティを確保しやすい点などが特徴として挙げられます。
「Amazon EC2」(Elastic Compute Cloud)インスタンスや「AWS Lambda」をはじめとする他のAWSサービス、オンプレミス環境で扱うオブジェクトデータの格納/取得、コールドデータの保存(ライフサイクル管理)などに広く活用されています。
本稿では、Amazon S3サービスの技術的な仕組みをオンプレミスのオブジェクトストレージと比較することに焦点を当てているため、詳細な仕様についてはAWSの「ユーザーガイド」を参照してください。
- Amazon Simple Storage Service ユーザーガイド(Amazon Web Services)
Amazon S3におけるバケット
Amazon S3におけるバケットには「汎用(はんよう)バケット」「ディレクトリバケット」「テーブルバケット」の3種類があり、それぞれ異なるユースケースに活用されます。
・汎用バケット
汎用バケットは、Amazon S3においてほとんどのユースケースにおいて使用が推奨されており、最も幅広く使用されているバケットタイプです。「Amazon S3 Express One Zone」を除く全てのストレージクラスを使用できます。また、基本的に3つ以上のAZ(Availability Zone)に冗長的にオブジェクトを保管するため、高可用性の確保がしやすく、AZ障害に対する耐性を持ちます。
・ディレクトリバケット
ディレクトリバケットは、フラットな構造を持つ汎用バケットとは異なり、データを階層的にディレクトリに保存します。ディレクトリバケットはデータを単一のAZに保存する点が特徴的で、AZ障害に対する耐性は失うものの、Amazon S3 Express One Zoneを使用して低レイテンシを必要とするワークロードに対応することが可能です。
・テーブルバケット
テーブルバケットは、表形式のデータとメタデータをオブジェクトとして保存するためのバケットタイプです。主にデータ分析などのワークロードで活用されます。
ストレージクラスとライフサイクル管理(データの階層化)
Amazon S3には、データのアクセス頻度や重要性に応じて幅広いストレージクラスが用意されており、頻繁にアクセスされるデータ向けのクラス(S3 Standardなど)、アクセス頻度が低いデータ向けのクラス(S3 Standard-IA《Infrequent Access》など)、S3 Standard-IAよりもさらにアクセス頻度が低いデータ向けのクラス(S3 Glacier)、アクセス頻度が不明または変動するデータ向けのクラス(S3 Intelligent-Tiering)に分けられます。これらはそれぞれパフォーマンスや料金設定が異なっており、適切に組み合わせることでコストを最適化できます。
Amazon S3では、オブジェクトのアップロード時にストレージクラスを指定することが可能です。バケットにライフサイクルルールを設定することで、下記のストレージクラスを使ってデータを階層化し、コストの最適化を図れます。また、S3 Intelligent-Tieringクラスを用いてデータを階層化することも可能です。以下に代表的なストレージクラスの特徴を示します。
・S3 Standard
S3 Standardはデフォルトのストレージクラスであり、オブジェクトのアップロード時に標準で選択されています。1カ月に2回以上アクセスする、アクセス頻度の高いデータの保存用に設計されており、ミリ秒単位のレイテンシでアクセス可能です。
・S3 Standard - IA
S3 Standard - IAは1カ月に1回以下のアクセスが見込まれる、S3 Standardよりもアクセス頻度の低いデータの保存用に設計されたストレージクラスです。S3 Standardに比べてデータへのアクセスにかかるコストは大きいものの、容量当たりのコストが小さく設定されています。
・S3 Glacier
S3 Glacierは、S3 Standard - IAよりもさらにアクセス頻度が低いデータの保存を目的とするストレージクラスです。容量当たりのコストが最も小さく抑えられているため、データアーカイブとして利用されることが多いです。
S3 Glacierには「Instant Retrieval」「Flexible Retrieval」「Deep Archive」の3つのストレージクラスがあり、それぞれをアクセス頻度によって使い分けることが可能です。
・S3 Intelligent-Tiering
S3 Intelligent-Tieringは、各オブジェクトへのアクセスをモニタリングし、アクセス頻度に応じて各オブジェクトを最適な階層に自動的に移動するストレージクラスです。格納されたオブジェクトはアクセス頻度に応じて、高頻度アクセス階層(S3 Standardと同等)、低頻度アクセス階層(S3 Standard - IAと同等)、アーカイブインスタントアクセス階層(S3 Glacier Instant Retrievalと同等)の3階層に分けて保存され、継続的に適切な階層に移動されます。
このストレージクラスは、アクセスパターンが変化するオブジェクトやアクセスパターンが不明なオブジェクトに有効で、データ分析用のデータレイクなど、幅広いユースケースで活用されています。
高可用性と耐障害性
Amazon S3はオンプレミスのストレージ装置とは異なり、具体的な構成やアーキテクチャを直接見ることはできません。しかし、AWSにより公開されている情報では、S3 Standardをはじめとするほとんどのストレージクラスでは、オブジェクトを3つ以上のAZに冗長的に保存するため99.999999999%(イレブンナイン)の耐久性と99.9%(S3 Standard - IA、S3 Intelligent-Tieringなど)〜99.99%(S3 Standard)の可用性を実現すると紹介されています。
Amazon S3におけるデータ保護
Amazon S3でも、先に紹介したバージョニング(S3 バージョニング)やオブジェクトロック(S3 オブジェクトロック)などのデータ保護機能が実装されています。
Amazon S3には上記のデータ保護機能に加えて、「レプリケーション」と呼ばれる機能があります。レプリケーションを使用した場合、S3バケット間で自動またはオンデマンドでオブジェクトをコピーすることが可能になります。
レプリケーションの機能自体はオンプレミスのユニファイドストレージやオブジェクトストレージにも存在することはあるものの、Amazon S3のレプリケーションが特徴的なのはリージョン間でのレプリケーションが可能なことです。Amazon S3においてオブジェクトは基本的に同一リージョン内の複数のAZに保存されますが、リージョン間レプリケーションによってさらに地理的に離れた場所にデータを保存することで、データの可用性を向上させたり、地理的に離れたユーザーからのデータアクセス遅延を抑えたりすることが可能になります。
バケット、オブジェクトへのアクセス
Amazon S3では、自分または他人のAWSアカウントおよびその「AWS IAM(Identity and Access Management)アイデンティティ」、匿名ユーザー(パブリックアクセス)、他のAWSサービスに対してアクセスを提供できます。これらのアクセスには先に紹介したURLによるアクセス(仮想ホスト方式、パス方式)と、バケットとアクセスポイントのARN(Amazon Resource Name)によるアクセスの2つの方法が主に使用されます。
バケットへのアクセスには「Amazon S3コンソール」や「AWS CLI」(コマンドラインインタフェース)、「AWS SDK」(ソフトウェア開発キット)、「Amazon S3 REST API」を使用します。これら4つのアクセス方法にはそれぞれ、適切なユースケースが存在します。
Amazon S3コンソールは、GUI(グラフィカルユーザーインタフェース)でバケットに対するほぼ全ての操作が可能です。コマンド/コードの記述は不要なため、多くのユーザーにとって使用しやすい方法です。
AWS CLIは、コマンドによってAmazon S3で何度も実行する必要のあるタスクを一括実行できるなど、効率的に運用したい場合に最適です。
AWS SDKは、「Java」や「Python」をはじめとするプログラミング言語やAndroidなどのプラットフォーム向けに用意されたライブラリなどから構成されるSDKです。Amazon S3へのリクエストなどがライブラリ化されているため、アプリケーションからのAmazon S3アクセスを簡略化できます。
Amazon S3 REST APIは、標準HTTPリクエスト(GET、POSTなど)を使用してバケットとオブジェクトの作成/取得/削除などが実行可能です。HTTPをサポートする任意の環境で使用できるため、非AWS環境からのアクセスやAmazon S3 APIをサポートするストレージ製品などによるアクセスでよく使用されています。
上記の手段を使用して、「GetObject」(オブジェクトのダウンロード)、「PutObject」(オブジェクトの格納)、「DeleteObject」(オブジェクトの削除)など、ほとんどの操作を実行可能です。ただし、「マルチパートアップロード」(オブジェクトを分割アップロードすることでスループットの向上などを実現する機能)など、一部の機能はAWS CLIやAWS SDKからのみ実行可能などの制限もあるため、ユースケースに応じて使い分けることが必要です。
Amazon S3におけるアクセスコントロール
Amazon S3では、IAM(Identity and Access Management)との組み合わせや、バケットポリシーの設定などによって、バケット/オブジェクトへのアクセスコントロールを設定できます。S3バケットやオブジェクト(Amazon S3リソース)を作成した場合、公開設定はデフォルト(既定)で「プライベート」となります。この場合、リソースにアクセス可能なユーザーはAWSアカウントのrootユーザーとアクセス許可を持つAWS IAMアイデンティティだけになります。
他のAWSアカウントや匿名ユーザー(パブリックアクセス)はアクセス許可を設定することで、他のアカウントとのリソース共有やリソースの公開が可能になります。ただし、パブリックアクセスに関しては不特定多数のユーザーからのアクセスによるリスクがあるため、AWSでは基本的にパブリックアクセスをブロックすることが推奨されています。
アクセスポイントを設定し、Amazon EC2やAmazon LambdaをはじめとするAWSサービスからのアクセスに使用するVPC(Virtual Private Cloud)アクセスポイントと、VPC外からのアクセスに使用するアクセスポイントを別々に用意することで、それぞれのアクセスに対するアクセスポイントポリシーを設定可能です。バケットポリシーは1つのバケットに対して1つのポリシーのみを設定するため、設定項目が大量かつ複雑になりがちですが、これをアクセス元ごとにアクセスポイントポリシーとして設定することでポリシーを細かく分割できます。
Amazon S3アクセスポイントは、バケットにアタッチされたネットワークエンドポイントで、S3オブジェクトに対するオペレーション(GetObject、PutObjectなど)のリクエストを受け付けます。
S3アクセス時にアクセスポイントを参照する場合、仮想ホスト形式のURL、ARN、アクセスポイントのエイリアスを利用できます。
オンプレミスストレージとの違い
オンプレミスのオブジェクトストレージおよびAmazon S3 APIに対応したユニファイドストレージとAmazon S3は基本的なオブジェクトストレージとしての機能や仕組みは同様ですが、以下のような幾つかの差異があります。
・Amazon S3は物理的な構造を意識せずに利用可能
Amazon S3の物理的な基盤はAWSが管理しているため、利用者は意識する必要がありません。また、地理的に離れた拠点でデータを冗長的に保管することは、オンプレミスの場合データセンター費用の負担や地理的な制約などから難しいことが多いです。Amazon S3の場合はデフォルトで複数のAZにデータを保存でき、簡単にリージョン間レプリケーションも設定できます。
しかし、データの物理的な保存場所は全てAWSが管理していることにより、例えばリージョン間レプリケーションの際にデータ主権の問題が発生するなど、要件に応じてさまざまな問題が発生する場合もあるため、使用する環境を柔軟に検討することが必要です。
・Amazon S3はサービス型で運用が簡単
例えば、オンプレミスの環境でライフサイクル管理を設定する場合、ストレージ管理者はストレージネットワークの設定やライフサイクルの設定など、複雑な作業が必要になります。Amazon S3ではS3 Intelligent-Tieringを使用することで簡単にデータのライフサイクルを管理できるようになります。このように、オンプレミスではストレージ管理者が設定しなければならないことが、Amazon S3では事前に定義されたサービスカタログから必要な設定を選択するだけで利用できます。これはクラウドサービスの主要なメリットの一つです。
・要件に対応する自由度はオンプレミスのストレージ製品の方が高い
要件に対しては、オンプレミスのストレージ製品の方が構成の自由度は高くなります。Amazon S3で設定可能なストレージクラスやその他のポリシー、ネットワークなどで対応可能な要件には限りがあるため、細かい要件への柔軟な対応はオンプレミスの方が優れているといえます。
例えば、AI(人工知能)トレーニング用のデータレイクなど、高速性が求められるワークロードにパブリッククラウドを使用する場合、ネットワーク速度やI/O(Input/Output)要件を必ずしも満たせるとは限りません。オンプレミスの場合は自分たちで必要な性能を満たす製品を選定、調達できるため、高い性能要件などが存在するワークロードではオンプレミスが最適な場合もあります。
・可用性はオンプレミスのストレージ製品の方が高い
Amazon S3の可用性は、S3 Standardなどの99.99%(フォーナイン)が最大ですが、オンプレミスのユニファイドストレージやオブジェクトストレージの主要ベンダーは99.9999%(シックスナイン)の可用性を公表しています。そのため、可用性の面ではオンプレミスのストレージ製品が優れているといえます。
また、パブリッククラウド全般にいえることですが、AWSのサービスに障害が発生する可能性もあります。サービス障害への対策として、単一パブリッククラウドへのロックインを避け、オンプレミスや別のパブリッククラウドにデータを冗長的に保存するような場合もあります。
以上のような点から、Amazon S3はオブジェクトストレージとして非常に使いやすいサービスといえますが、可用性や構成の自由度、データ主権の観点など、オンプレミスのストレージ製品を使用すべき場面も多くあります。それぞれのメリット/デメリットを比較しながらストレージを選定していくことを推奨します。
Amazon S3の基本操作
ここからは、Amazon S3における基本的な操作手順を紹介していきます。
今回はAmazon S3コンソールを使用して、バケットの作成からバケットポリシーの設定、オブジェクトの格納と取得までを実施します。
1. バケットの作成
まずAWSアカウントにサインインし、マネジメントコンソールにアクセスします。画面左上の「サービス」を選択し、「ストレージ」の「S3」を選択します。
次に、「バケットを作成」をクリックします。今回は汎用バケットを作成します。
バケットの作成画面に移動します。最初にバケットの名前を設定します。
今回は推奨設定(ACL無効、パブリックアクセスをすべてブロック)を使用します。
バケットのバージョニング設定、タグ設定、暗号化設定、その他の詳細設定をしたら「バケットを作成」をクリックすることでバケットが作成されます。
バケットが正常に作成されました。
2. バケットポリシーの設定
作成したバケットを選択し、「アクセス許可」をクリックしてバケットポリシーを編集します。
「ステートメントを追加」をクリックすると、サービスや操作を選択・指定してポリシーを設定できます。今回は他のAWSサービスやAWS外部からのアクセスは行わないため、ポリシーは空欄のままとします。
3. オブジェクトの格納(アップロード)
「アップロード」をクリックしてオブジェクトのアップロード画面を開きます。
「ファイルを追加」をクリックしてアップロードするファイルを選択します。
プロパティからストレージクラスを選択します。今回はスタンダードを使用します。
アクセス許可やプロパティの設定が完了したら「アップロード」をクリックします。
アップロードが開始されるとアップロードステータス画面に遷移します。アップロードが完了したら「閉じる」をクリックしてコンソール画面に移動します。
これでオブジェクト(ファイル)のアップロードは完了です。
4. オブジェクトの取得(ダウンロード)
オブジェクトを選択して「ダウンロード」をクリックします。
これでオブジェクト(ファイル)のダウンロードは完了です。
まとめ
本稿では、オブジェクトストレージの概要と仕組み、Amazon S3とオンプレミスストレージの比較などによってオブジェクトストレージ製品の基本的な仕組みを解説しました。その他のストレージ装置の解説は、本連載第2回(ブロックストレージ)、第5回(ファイルストレージ)で詳しく紹介しているので、そちらもぜひ参照してください。本稿を読んで、Amazon S3をはじめとするオブジェクトストレージサービスや、オンプレミスのオブジェクトストレージについての理解が深まれば幸いです。本稿では基礎的な内容のみを紹介しているので、詳細な解説はAWSのユーザーガイドなどを参照してください。
次回、第7回はストレージの「データ保護」について解説します。
筆者紹介
佐藤 隼人
ネットワンシステムズ ビジネス開発本部 応用技術部 クラウドインフラチーム
2023年にネットワンシステムズに入社。ストレージ製品の評価、検証、案件支援を主な業務として担当。現在は、ハイブリッドマルチクラウド環境の管理や最適化を中心に技術検証業務に従事している。
Copyright © ITmedia, Inc. All Rights Reserved.