Amazon S3 の概要:クラウド上のオブジェクトストレージの仕組み
Amazon Simple Storage Service(S3)は、Amazon Web Services(AWS)の一部を構成する、広く利用されているクラウドストレージサービスです。Amazon S3クラウドストレージは、高い信頼性、柔軟性、拡張性、およびアクセス性を提供します。 Amazon S3に保存できるオブジェクトの数やデータ量に制限はありません。S3クラウドストレージは、使用量に応じた課金体系であるため、ビジネスにとって魅力的なサービスです。
しかし、専門用語や仕組みの理解が不十分だと、Amazon S3を初めて利用するユーザーにとっては誤解や困難を招く可能性があります。S3のデータはどこに保存されるのでしょうか?Amazon S3ストレージはどのように機能するのでしょうか?このブログ記事では、Amazon S3クラウドストレージの主な概念と動作原理について解説します。
Amazon S3 ストレージについて
Amazon S3は、AWSが提供する最初のクラウドサービスであり、2006年に開始されました。それ以来、このストレージサービスの人気は高まり続けています。現在、Amazonは他にも幅広いクラウドサービスを提供していますが、Amazon S3クラウドストレージは最も広く利用されているサービスです。Amazon S3ストレージに加え、AWSではEC2向けのAmazon EBSボリュームやAmazon Driveも提供しています。しかし、これら3つのサービスは、それぞれ用途や目的が異なります。
EBS (Elastic Block Storage) EC2(Elastic Compute Cloud)インスタンスのボリュームは、Amazonクラウド上に存在する仮想マシン用の仮想ディスクです。EBSという名称からもお分かりのように、これはクラウド上のブロックストレージであり、物理コンピュータにおけるハードディスクドライブに相当します。オペレーティングシステムは、EC2インスタンスにアタッチされたEBSボリューム上にインストールすることができ、 EC2 例。
Amazon Drive (旧称:Amazon Cloud Drive)は、Google Driveに相当するサービスであり、 Microsoft OneDrive. Amazon Driveは、Amazon S3に比べて機能の幅が狭い。Amazon Driveは、写真やその他のユーザーデータをバックアップするためのクラウドストレージサービスとして位置づけられている。
Amazon S3 クラウドストレージは、オブジェクトベースのストレージサービスです。Amazon S3 ストレージを使用する場合、オペレーティングシステムが要求するようなブロックレベルでのデータアクセスができないため、オペレーティングシステムをインストールすることはできません。Amazon S3 ストレージをオペレーティングシステムにネットワークドライブとしてマウントする必要がある場合は、ユーザー空間のファイルシステムを使用してください。これに関するブログ記事をご覧ください。 S3クラウドストレージのマウント さまざまなオペレーティングシステムへ。 Google Cloud Amazon S3 クラウドストレージに相当するものです。
Amazon S3 の主な概念
Amazon S3を初めてご利用になる場合、いくつかの概念がこれまでとは異なっており、馴染みのないものと感じるかもしれません。S3クラウドへのデータ保存方法は、従来のハードディスクドライブ、ソリッドステートドライブ、またはディスクアレイへのデータ保存とは異なります。以下に、Amazon S3クラウドストレージにおけるデータの保存および管理に使用される主な概念と技術の概要を説明します。
S3はファイルをどのように保存するのですか?
前述の通り、Amazon S3 のデータはオブジェクトとして保存されます。このアプローチにより、クラウド上で高いスケーラビリティを備えたストレージが実現されます。オブジェクトは、データセンター全体に分散した異なる物理ディスクドライブ上に配置されることがあります。Amazon のデータセンターでは、高いスケーラビリティを実現するために、専用のハードウェア、ソフトウェア、および分散ファイルシステムが採用されています。冗長性とバージョン管理は、ブロックストレージのアプローチを用いて実装された機能です。 ファイルがAmazon S3にオブジェクトとして保存されると、デフォルトでは複数の場所(ディスク上、データセンター内、アベイラビリティゾーンなど)に同時に保存されます。Amazon S3サービスは、制御ハッシュのチェックを通じて、定期的にデータの整合性を確認します。データの破損が検出された場合、冗長データを使用してオブジェクトが復元されます。オブジェクトはAmazon S3バケットに保存されます。デフォルトでは、Amazon S3ストレージ内のオブジェクトには、Webインターフェースを介してアクセスおよび管理を行うことができます。
S3オブジェクトストレージとは何ですか?
オブジェクトストレージとは、データをブロックではなくオブジェクトとして保存するストレージの一種です。この概念は、データに対して有用です バックアップ、アーカイブ機能、および高負荷環境における拡張性。
Objects これらは、Amazon S3 バケットにおけるデータ保存の基本単位です。 オブジェクトには主に3つの構成要素があります。オブジェクトの内容(ファイルやディレクトリなど、オブジェクト内に保存されたデータ)、一意のオブジェクト識別子(ID)、およびメタデータです。メタデータはキーと値のペアとして保存され、名前、サイズ、日付、セキュリティ属性、コンテンツタイプ、URLなどの情報が含まれます。
各オブジェクトには、そのオブジェクトへのアクセスを許可されるユーザーを構成するためのアクセス制御リスト(ACL)があります。 Amazon S3 オブジェクトストレージを利用することで、S3 クラウドストレージに保存されたオブジェクトへのトラフィックが大幅に増加するラッシュアワー時のネットワークのボトルネックを回避できます。Amazon は柔軟なネットワーク帯域幅を提供しますが、保存されたオブジェクトへのネットワークアクセスには料金が発生します。オブジェクトストレージは、多数のクライアントがデータにアクセスする必要がある場合(読み取り頻度が高い場合)に適しています。オブジェクトストレージモデルでは、メタデータによる検索が高速に行えます。
以下の記事もご参照ください。 Amazon S3の暗号化 Amazon S3 クラウドストレージに保存されたデータを保護し、セキュリティを強化するのに役立つものです。
バケツ
A bucket バケットは、Amazon S3 ストレージにデータを格納するための基本的な論理コンテナです。1つのバケットには、無制限の量のデータと無制限の数のオブジェクトを格納できます。各 S3 オブジェクトはバケット内に格納されます。バケット内に格納される 1 つのオブジェクトのサイズには、5 TB の制限があります。バケットは、最上位レベルでの名前空間の整理や、アクセス制御に使用されます。
キー
オブジェクトには unique key バケットにアップロードされた後です。このキーは、ディレクトリ階層を模した文字列です。このキーが分かれば、バケット内のオブジェクトにアクセスできます。バケット、キー、およびバージョンIDによって、オブジェクトは一意に識別されます。たとえば、バケット名が blog-bucket01、データセンターがお客様のデータを保存している地域は s3-eu-west-1 そして、オブジェクト名は test1.txt (テキストファイル)の場合、バケット内のオブジェクトとして保存されている必要なファイルへのURLは次のとおりです:
https://blog-bucket01.s3-eu-west-1.amazonaws.com/test1.txt
オブジェクトを他のユーザーと共有したい場合は、オブジェクトの属性を編集して権限を設定する必要があります。同様に、 テキストファイル フォルダを作成し、そのフォルダにテキストファイルを保存します:
https://blog-bucket01.s3-eu-west-1.amazonaws.com/TextFiles/test1.txt
使用できるURLには、次の2種類があります:
- bucketname.s3.amazonaws.com/objectname
- s3.amazon.aws.com/バケット名/オブジェクト名
AWSリージョン
Amazonは、米国、アイルランド、南アフリカ、インド、日本、中国、韓国、カナダ、ドイツ、イタリア、英国など、世界中のさまざまなリージョンにデータセンターを保有しています。バケットを作成する際には、希望するリージョンを選択できます。ネットワーク接続の遅延を低減したり、コストを最小限に抑えたりするため(リージョンによってデータ保存料金が異なるため)、ご自身や顧客にとって最も近いリージョンを選択することをお勧めします。 特定のAWSリージョンに保存されたデータは、手動で移行しない限り、そのリージョンのデータセンターから外部へ持ち出されることはありません。AWSリージョンは、耐障害性と安定性を確保するために、互いに隔離されています。
各リージョンには、AWSリージョン内の独立した場所であるアベイラビリティゾーンが含まれています。火災、台風、ハリケーン、洪水などの災害による障害を防ぐため、各リージョンには少なくとも3つのアベイラビリティゾーンが用意されています。
データ整合性モデル
Amazon S3 ストレージに保存されたオブジェクトに対しては、書き込み後の読み取り一貫性チェックが行われます。Amazon S3 は、高い可用性を実現するために、選択されたリージョン内のサーバーおよびデータセンター間でデータをレプリケートします。PUT リクエストが正常に完了した後、変更されたデータはサーバー間でレプリケートされる必要があります。この処理には多少の時間がかかる場合があります。 この場合、ユーザーは古いデータまたは更新後のデータを取得できますが、破損したデータが返されることはありません。これは、削除されたオブジェクトやバケットについても同様です。S3バケットに新しいオブジェクトが送信される際、オブジェクトのロックは行われません。複数のPUTリクエストが同時に実行された場合、最新のPUTリクエストが優先されます。Amazon S3ストレージに保存されたオブジェクトに対応したロック機構を備えた独自のアプリケーションを作成することも可能です。
Amazon S3 の機能
オブジェクト型ストレージという概念により、AmazonはAmazon S3におけるデータの保存と管理に関して、便利な機能と高い柔軟性を提供しています。これらの機能について確認してみましょう。
バージョン管理
オブジェクトのバージョン管理機能を使用すると、1つのバケットにオブジェクトの複数のバージョンを保存できます。この機能により、Amazon S3 ストレージに保存されたオブジェクトを、意図しない編集、上書き、または削除から保護することができます。オブジェクトを変更または削除した後でも、そのオブジェクトの以前のバージョンのいずれかを復元することができます。バージョン管理は、オブジェクトストレージのアプローチを採用していることから実装されています。 バージョン管理は、アーカイブ目的で使用できます。バージョン管理はデフォルトで無効になっています。
バージョン管理が有効になっていない場合でも、各 S3 オブジェクトにはバージョン ID が割り当てられます(この場合、バージョン ID の値は null に設定されます)。 バージョン管理が有効になっている場合、変更の書き込み後に、オブジェクトの新しいバージョンに新しいバージョンID値が割り当てられます。バージョン管理はバケットレベルで有効にできます。オブジェクトの最初のバージョンのバージョンID値は変更されません。(バージョン管理が有効になっている)S3バケットからオブジェクトを削除すると、そのオブジェクトの最新バージョンに削除マーカーが適用されます。
ストレージクラス
Amazon S3 のストレージクラスは、データの保存に選択されるストレージの用途を定義するものです。ストレージクラスはオブジェクト単位で設定できますが、バケット単位で、今後作成されるオブジェクトのデフォルトのストレージクラスを設定することも可能です。
S3 Standard デフォルトのストレージクラスです。このクラスはホットデータ用ストレージであり、頻繁にアクセスされるデータの保存に適しています。Webサイトのホスティング、コンテンツの配信、クラウドアプリケーションの開発などには、”Standard”ストレージクラスをご利用ください。ストレージコストは高いものの、復元コストは低く、データへのアクセスが高速であることが、このストレージクラスの特徴です。
S3 Standard-IA (アクセス頻度が低い)は、S3 Standardよりもアクセス頻度の低いデータを保存するために使用できます。S3 Standard-IAは、長期保存に最適化されています。S3 Standard-IAストレージクラスに保存されたデータを取得する際には、料金が発生します。さらに、両者とも S3 Standard そして S3 Standard-IA データリクエスト(PUT、COPY、POST、LIST、GET、SELECT)には料金がかかります。
S3 One Zone-IA アクセス頻度の低いデータ向けに設計されています。データは1つのアベイラビリティゾーンにのみ保存され(S3 Standardでは3つのアベイラビリティゾーンに保存されます)、その結果、冗長性と耐障害性のレベルは低くなります。 公表されている可用性レベルは99.5%であり、他の2つのストレージクラスよりも低くなっています。S3 One Zone-IAはストレージコストが低く、復元コストは高くなります。また、データの取得にはGB単位で料金が発生します。このストレージクラスは、コスト効率に優れた保存先として検討できます。 バックアップコピー または、Amazon S3のリージョン間レプリケーションによって作成されたデータのコピー。
S3 Glacier 他のストレージクラスとは異なり、保存されたデータへの即時アクセスは提供されません。S3 Glacier は、低コストでデータを長期保存するために利用できます。サービスが中断なく稼働することについては保証されません。 データを取得するには、数分から数時間待つ必要があります。S3ライフサイクルポリシーを使用することで、上位クラスのストレージ(例えばS3 Standard)からS3 Glacierへ古いデータを移行し、ストレージコストを削減することができます。
S3 Glacier Deep Archive S3 Glacierと似ていますが、データの取得にかかる時間は約12時間から48時間です。料金はS3 Glacierよりも安くなっています。S3 Glacier Deep Archiveストレージクラスは、データアーカイブに関する規制要件(金融、医療など)を遵守する企業のバックアップやアーカイブデータの保存に利用できます。これはテープカートリッジの優れた代替手段となります。
S3 Intelligent-Tiering は、他のストレージクラスを利用する特別なストレージクラスです。S3 Intelligent-Tiering は、データへのアクセス頻度が不明な場合に、データの保存に適したストレージクラスを自動的に選択することを目的としています。Amazon S3 は、S3 Intelligent-Tiering を使用する際のデータアクセスパターンを監視し、オブジェクトを 2 つの選択されたストレージクラス(頻繁にアクセスされるデータ用と、ほとんどアクセスされないデータ用)のいずれかに保存します。 このアプローチにより、パフォーマンスを損なうことなく、最適なコスト効率を実現できます。
たとえば、アクセス頻度の低いデータ用のストレージクラスに保存されているオブジェクトにアクセスすると、そのオブジェクトは自動的にアクセス頻度の高いデータ用のストレージクラスに移動されます。逆に、オブジェクトが長期間アクセスされなかった場合は、アクセス頻度の低いデータ用のストレージクラスに移動されます。オブジェクトは同じバケット内に存在することができ、ストレージクラスの変更は S3 オブジェクト単位で行われます。
アクセス制御リスト
アクセス制御リスト(ACL)は、オブジェクトやバケットへのアクセスを管理および制御するために使用される機能です。アクセス制御リストは、各バケットやオブジェクトに紐付けられるリソースベースのポリシーであり、そのバケットやオブジェクトにアクセスする権限を持つユーザーやグループを定義します。デフォルトでは、リソースの作成後、リソースの所有者はそのバケットまたはオブジェクトに対して完全なアクセス権を持ちます。バケットのアクセス権限は、バケット内のオブジェクトにアクセスできるユーザーを定義します。 オブジェクトへのアクセス権限は、オブジェクトへのアクセスが許可されるユーザーと、アクセスの種類を定義します。たとえば、あるユーザーには読み取り専用権限を、別のユーザーには読み取り・書き込み権限を設定することができます。
権限を持つことができるユーザーの完全なリスト(権限を持つユーザーは”被付与者”と呼ばれます):
Owner – バケットやオブジェクトを作成するユーザー。
Authenticated Users – AWSアカウントを持つすべてのユーザー。
All Users – 匿名ユーザー(AWSアカウントを持たないユーザー)を含むすべてのユーザー。
User by Email/Id – AWSアカウントを持つ指定されたユーザー。このユーザーにアクセス権を付与するには、ユーザーのメールアドレスまたはAWS IDを指定する必要があります。
利用可能な権限の種類:
Full Control – この権限タイプでは、”読み取り”、”書き込み”、”読み取り(ACP)”、および”書き込み(ACP)”の権限が提供されます。
Read – バケットレベルで適用すると、バケットの内容を一覧表示できます。オブジェクトレベルで適用すると、オブジェクトのデータおよびメタデータを読み取ることができます。
Write – バケットレベルでのみ適用可能であり、バケット内の任意のオブジェクトの作成、削除、上書きを行うことができます。
Read Permissions (READ ACP) – ユーザーは、指定されたオブジェクトまたはバケットに対する読み取り権限を持っています。
Write Permissions (WRITE ACP) – ユーザーは、指定されたオブジェクトまたはバケットのアクセス権を上書きできます。ユーザーに対してこの権限タイプを有効にすることは、”フルコントロール”権限を設定することと同じです。これは、ユーザーが自身のアカウントに対して任意のアクセス権を設定できるためです。この権限は、デフォルトでバケットの所有者に付与されています。
バケットポリシー
バケットポリシーは、リソースベースの AWS アイデンティティおよびアクセス管理ポリシーであり、AWS アカウントやユーザーがバケットおよびバケット内のオブジェクトにアクセスする際に、アクセス権限を付与するための条件付きルールを作成するために使用されます。バケットポリシーを使用すると、バケット内の複数のオブジェクトに対するセキュリティルールを定義できます。
バケットポリシーは JSON ファイルとして定義されます。バケットポリシーの設定テキストは、有効であるために JSON 形式の要件を満たしている必要があります。 バケットポリシーはバケットレベルでのみ適用可能であり、バケット内のすべてのオブジェクトに継承されます。指定されたIPアドレスから接続するユーザーや、指定されたAWSアカウントのユーザーなどに対して、アクセス権を付与することができます。
以下に、あるアカウントのすべてのユーザーにフルアクセス権を付与し、別のアカウントのすべてのユーザーに読み取り専用アクセス権を付与するポリシーの例を示します。
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"SGWS": "95381782731015222837"
},
"Action": "s3:*",
"Resource": [
"urn:sgws:s3:::blog-bucket01",
"urn:sgws:s3:::blog-bucket01/*"
]
},
{
"Effect": "Allow",
"Principal": {
"SGWS": "30284200178239526177"
},
"Action": "s3:GetObject",
"Resource": "urn:sgws:s3:::blog-bucket01/shared/*"
},
{
"Effect": "Allow",
"Principal": {
"SGWS": "30284200178239526177"
},
"Action": "s3:ListBucket",
"Resource": "urn:sgws:s3:::blog-bucket01",
"Condition": {
"StringLike": {
"s3:prefix": "shared/*"
}
}
}
]
}
ユーザーは、ユーザー名やパスワードを入力することなく、アクセスキー(アクセスキーIDとシークレットアクセスキー)を使用してAmazon S3ストレージにアクセスできます。この方法によりセキュリティを強化することができ、APIを利用してAmazon S3クラウドストレージにアクセスするアプリケーションの構築に活用されています。
Amazon S3 用 API
Amazonは、S3の機能にアクセスしたり、Amazon S3ストレージと連携して動作する独自のアプリケーションを開発したりするためのアプリケーション・プログラミング・インターフェース(API)を提供しています。Amazonが提供するインターフェースには、RESTとSOAPがあります。RESTインターフェースは、標準的なHTTPリクエストを使用してバケットやオブジェクトを操作します。REST APIでは、標準的なHTTPヘッダーが使用されます。SOAPインターフェースも利用可能なインターフェースの一つです。HTTP経由でのSOAPの使用は非推奨となっていますが、HTTPS経由でのSOAPの使用は引き続き可能です。
支払いモデル
Amazon S3 は”使用量に応じた課金”モデルを採用しています。最低利用料金は設定されておらず、あらかじめ決められたストレージ容量やネットワークトラフィックに対して料金を支払う必要はありません。課金対象となる利用カテゴリは以下の通りです:
Storage. Amazon S3 に保存されたオブジェクトに対して料金が発生します。支払額は、使用したストレージ容量、Amazon S3 ストレージへのオブジェクトの保存期間(その月内)、および保存されたオブジェクトが使用するストレージクラスによって決まります。
Requests and data retrieval. Amazon S3 クラウドストレージに保存されているデータを取得するためのリクエストに対しては、料金を支払う必要があります。
Data transfer. インターネットからの受信データ、送信元S3バケットと同じAWSリージョンにあるAmazon EC2インスタンスへ転送される送信データ、およびS3バケットからCloudFrontへ送信されるデータを除き、使用したすべての帯域幅(受信および送信トラフィック)に対して料金が発生します。
Management and replication. 分析やオブジェクトタグ付けなどのストレージ管理機能を利用するには、料金を支払う必要があります。Amazonでは、リージョン間レプリケーションおよび同一リージョン内レプリケーションに対して課金されます。
使用方法 Amazon S3 計算ツール お支払額を見積もるには。


