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 OneDriveAmazon 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 がデフォルトのストレージクラスです。このクラスはホットデータ用ストレージであり、頻繁にアクセスされるデータに適しています。ウェブサイトのホスティング、コンテンツ配信、クラウドアプリケーションの開発などには、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は"使用量に応じた課金"モデルを採用しています。最低利用料金は不要であり、あらかじめ決められたストレージ容量やネットワークトラフィックに対して料金を支払う必要はありません。課金対象となる利用区分は以下の通りです:
StorageAmazon S3に保存されたオブジェクトに対して料金が発生します。支払額は、使用したストレージ容量、Amazon S3ストレージへのオブジェクトの保存期間(その月)、および保存されたオブジェクトが使用するストレージクラスによって決まります。
Requests and data retrievalAmazon S3クラウドストレージに保存されたデータを取得するためのリクエストには、料金が発生します。
Data transfer. インターネットからの受信データ、送信元S3バケットと同じAWSリージョンにあるAmazon EC2インスタンスへ転送される送信データ、およびS3バケットからCloudFrontへ送信されるデータを除き、使用したすべての帯域幅(受信および送信トラフィック)に対して料金が発生します。
Management and replication. 分析やオブジェクトタグ付けなどのストレージ管理機能を利用するには、料金を支払う必要があります。Amazonでは、リージョン間レプリケーションおよび同一リージョン内レプリケーションに対して課金されます。
利用 Amazon S3 計算ツール お支払額を見積もるには。


