[AWS]AmazonS3:使いこなすための基礎知識!と、類似サービスの比較
ストレージサービス:Amazon S3について
AWSでも必須のサービスであり、EC2とも連携されることが多いサービスの一つです。
初めに、用語がわからないと理解しづらいので、用語集を以下のタブに格納しておきます。
Amazon S3でよく使われる用語
用語 | 説明 |
---|---|
バケット |
オブジェクトの保存場所であり、一つのストレージの単位でもある。 AWSアカウント内に複数作成可能。 バケット名はグローバルに一意で、バケット内のオブジェクトにアクセスする際の URLの一部として利用可能。 |
オブジェクト |
バケットに保存されているファイル本体。 (S3で扱うエンティティの単位) 1つのバケットに格納できるオブジェクト数は無制限で、ファイルサイズは5TBまで可能。 |
オブジェクトキー | オブジェクトの識別子。 オブジェクト名は「バケット名+キー+バージョン」の組み合わせで、必ず一意になる。 |
オブジェクトメタデータ | オブジェクトに付属する属性情報で、名前と値のセットで構成される。 システム定義メタデータとユーザー定義メタデータがある。 |
整合性 | Amazon S3は、複数の場所にデータを複製することで、サービスの可用性と信頼性を 高めている。以前はデータの更新や削除はすぐに上書きされず、 反映されるまで時間がかかる結果整合性(Eventual Consistency)というモデルを サポートしていたが、2020年のアップデートにより、 更新後すぐに最新バージョンのデータに反映されるようになり、 強い一貫性(Strong Consistency)というモデルをサポートするようになった。 |
Amazon S3とは?: 概要
- S3は、Simple Storage Serviceの略称で、AWSが提供するクラウドストレージサービス。
単なるストレージ!しかもシンプル!難しいものではないよ。
= データやファイルをクラウド上に保存できるサービスであり、
容量無制限、高可用性、高度な耐久性、使いやすい価格設定、スケーラブルで安定した性能が特徴。 - S3は、オブジェクトストレージと呼ばれるストレージ形式を採用しており、オブジェクトと呼ばれるファイル単位でデータを保持しています。
ストレージサービスといえば...
EBS(Elastic Block Store)もパッと出てくるが、これはEC2内で運用する必要があり、
・ EC2インスタンスのOSそのものの管理が必要
・ 不測の障害発生時の準備が必要
・ EC2インスタンスが1年間に5分弱停止する可能性がある
の3点の課題からS3を使用することが多い。
AWSの中で、S3と類似サービスの比較
S3はストレージという点で、類似したものはそれぞれ何が違うのか、tableで比較をしてみた。
S3 | EBS | S3 Glacier | EFS | |
---|---|---|---|---|
概要 | ストレージサービス | EC2インスタンス用ストレージサービス | 長期間保存用ストレージサービス | EC2インスタンス用ファイル共有サービス |
ストレージタイプ | オブジェクトストレージ | ブロックストレージ | アーカイブストレージ | ファイルストレージ |
設置場所 | グローバル | マルチAZ | マルチAZ | マルチAZ |
アクセス | 単一インスタンス | インターネット経由 | インターネット経由 | 複数のインスタンス動じアクセス可 |
処理速度 | 高速 | 高速 | 低速 | 中速 |
価格 | オブジェクトサイズ、ストレージタイプ、転送量によって変動 | ストレージ容量、使用期間によって変動 | ストレージ容量、データ保持期間、アクセス頻度によって変動 | ストレージ容量、使用期間、リクエスト数によって変動 |
上記のtableからも分かるように、S3、EBS、S3 Glacier、EFSは
それぞれ異なるストレージタイプを提供しており、それぞれ特定の目的に向けて設計されています。
違いの詳細
-
S3:
これは一般的なオブジェクトストレージ。
データを単一のインスタンスからアクセスする場合に使用。
グローバルにアクセス可能であり、高速な処理速度を持つ。
価格はオブジェクトサイズ、ストレージタイプ、転送量に応じて変動。 -
EBS:
これはブロックストレージ。EC2インスタンス用に設計されており、マルチAZで利用可能。
インターネット経由でアクセスすることができます。価格は、ストレージ容量と使用期間に応じて変動します。 -
S3 Glacier:
長期間保存されるデータを保管するためのアーカイブストレージ。
アーカイブされたデータにアクセスする場合は、低速な処理速度であることがありますが、
データ保持期間やアクセス頻度に応じた価格設定があります。
データ取り出しに時間がかかる。 -
EFS:
これはEC2インスタンス用のファイル共有サービス。
複数のインスタンスからアクセス可能であり、中速な処理速度を持ちます。
価格は、ストレージ容量、使用期間、リクエスト数に応じて変動します。
オブジェクトストレージ??:ストレージ様式の種類と特徴
上記の詳細部分にも記載したが、似たサービスの比較の中にも、ストレージタイプの違いを記載した。
オブジェクトストレージ、ブロックストレージ、ファイルストレージのそれぞれの特徴を紹介します。
【オブジェクトストレージ】
各データを「オブジェクト」として管理するストレージ方式。
ファイルの読み書きにはHTTPやHTTPSが使われ、レイテンシが高め。
大容量ストレージに向いている。
Amazon S3がオブジェクトストレージを採用している。
【ブロックストレージ】
データを「ブロック」の集合体として管理するストレージ方式。
OSはブロックストレージをファイルシステムとしてフォーマットし、ファイル単位で操作可能。
物理的または高速なネットワークで接続することにより、低いレイテンシを実現できる。
Amazon Elastic Block Store(EBS)がブロックストレージを採用している。
【ファイルストレージ】
NFSやSMBなどのファイル共有プロトコルによってファイルを管理するストレージ方式。
ネットワークプロトコルが介在するため、レイテンシが高め。
Amazon Elastic File System(EFS)がNFSを使用するファイルストレージである。
以上、AWSのストレージ関連サービスについての紹介でした。それぞれのストレージ方式には、適した用途や特徴があるので、使い分けが重要です。
S3: 位置付けで言うと...
S3は異なる3つのAZに属し、インターネットから直接アクセスが可能なので、VPCの外側になります。
S3: 特徴
-
S3の最大の特徴は"多機能であること"。その中でも、代表的な機能は、
"Webサーバー機能" と、"クエリ機能" だ。 - とにかく安い。
特徴 | 概要 |
---|---|
スケーラビリティ | 高速なデータ処理と大規模なデータの保管が可能で、 必要に応じて自動的に容量を拡張できる(ライフサイクルポリシー) |
可用性、耐久性 | 99.999999999%(11 x 9)の耐久性を実現するデータ保存システムで、 サービスが停止するリスクが少ない |
信頼性 | 高い耐久性、データの冗長性、および異なる地理的ロケーションへの レプリケーションによって、データの信頼性が確保されている |
豊富な管理機能 | バケットポリシー、アクセス制御、バージョニング、ライフサイクル管理、 クロスリージョンレプリケーションなど、多数の機能が提供されている |
インテリジェントな機能 | データの自動分類、検出、自動削除、アクセス履歴の監視など、 インテリジェントな機能が提供されており、セキュリティ面でも 優れたシステム |
上記特徴の詳細はこちら
1. スケーラビリティ
- スケールアップ、ダウンがしやすい。
- "ライフサイクルポリシー"を使用すれば、データの増減に応じて自動的にスケーリングするため、
データ量が急増した場合でも、ストレージ容量を増やす手間がない。 - 複数のアカウント間でデータを簡単に共有できるため、ビジネスの拡大にも柔軟に対応できる。
2. 可用性、耐久性
- 最低3つのAZに自動的に複製して保存されている為、どれか一つに障害があっても、使い続けることが可能。
3. 信頼性
- 暗号化機能と、アクセス管理ツールがあり、攻撃から守りやすい。
- コンプライアンスに適合していること、監査機能が充実していることも魅力。
4. 豊富な管理機能
- ストレージクラス分析、ライフサイクルポリシーなど、
これら豊富な管理機能を使用することで、フィットしたストレージクラスの選択ができる。
5. インテリジェントな機能
- S3 select(データクエリ実行機能)や、Amazon athena、Amazon redshift spectramなどの
分析サービスとも互換性があり、AWSのLambaとも連携が可能になっている。
Amazon S3の特徴と適した利用方法
- Amazon S3は、単一のファイル転送の性能だけでなく、
複数のファイルを同時に転送する場合の性能が優れている。
=> 大量のデータを配信するアプリケーションやサービスのストレージとして利用されている。
また、AWSクラウドの様々なサービスのバックアップやアーカイブの保存場所としても使用されている。 - Amazon S3はストレージサービスであり、処理速度やレイテンシの速さには特化していない!!!。
=> リアルタイム処理などの高速な処理には向いていない。
レイテンシ(latency)とは:
データ転送における指標の1つ。
データ転送の要求を出してから、実際に結果が返ってくるまでにかかる時間。
「レイテンシが低い(小さい)」とは、遅延時間が短いことを指す。
他のクラウドサービスとの比較: 各クラウドサービスの特徴
- S3が複数のファイルを同時に転送する場合の性能が優れていて、
リアルタイム処理などの高速な処理には向いていない...他サービスと状況によって使い分ける必要ある?てな訳で、調べて比較表にしてみた。
クラウドストレージサービス | Amazon S3 | Microsoft Azure Blobストレージ | Google Cloud Storage | IBM Cloud Object Storage |
---|---|---|---|---|
ファイル転送の性能 | 優れている | 一般的 | 高速 | 一般的 |
処理速度やレイテンシ | 特化していない | 一般的 | 高速 | 一般的 |
リアルタイム処理に向いているか | 向いていない | 一部向いている | 向いている | 一部向いている |
セキュリティ性 | 一般的 | 一般的 | 一般的 | 優れている |
※注:表中の「一般的」は、特に優れた性能でもなく劣った性能でもないことを意味。
S3のアーキテクチャ
以下の3つの要素で構成されています。
=> リージョン / バケット / オブジェクト
リージョンとは、AWSのサービスが展開されている地域のことです。S3は、世界中に17のリージョンを持っています。リージョンによって、S3のパフォーマンスや料金体系が異なるため、適切なリージョンを選択することが重要です。
次に、バケットとは、S3に保存されるデータのコンテナのことです。バケットは、グローバルに一意な名前を持ちます。バケット内には、オブジェクトを保存することができます。
最後に、オブジェクトとは、S3に保存されるデータの単位です。オブジェクトは、ファイルとして保存されることが一般的ですが、S3では、ファイルだけでなく、データベース、静的ウェブサイト、バックアップ、ログなど、さまざまなデータを保存することができます。
S3のアーキテクチャは、多くの特徴を持っています。例えば、耐久性が高いため、データの損失が発生する可能性が非常に低いこと、グローバルなアクセスが可能であるため、世界中から高速かつ安定したアクセスが可能であること、スケーラビリティが高いため、大規模なデータでも高速かつ安定したアクセスが可能であることなどが挙げられます。
以上が、S3のアーキテクチャの概要です。
S3: 仕組み
AWS S3は、オブジェクトストレージサービスであり、以下のようなアーキテクチャで提供されている。
1. エンドユーザーは、S3オブジェクトを操作するために、
PUT、GET、DELETEなどのリクエストを発行
・ このリクエストは、インターネットを経由してS3のリージョンごとのロードバランサに到達。
・ このロードバランサは、S3の「エンドポイント」と呼ばれます。
2. ロードバランサーは、リクエストをAPIサーバーのいずれかに転送
・ APIサーバーは、メタデータを操作する場合は「メタデータストレージ」にアクセスし、
ファイル本体を操作する場合は「BLOBストレージ」にアクセスして、
エンドユーザーがリクエストした処理を実行。
・ S3のメタデータストレージは、オブジェクトの情報を保存.
・ S3のBLOBストレージは、実際のオブジェクトデータを保存。
S3は、BLOBストレージに格納されたオブジェクトをマルチパートアップロードで分割することができます。
また、オブジェクトはS3にアップロードされた際に、暗号化されることができる。
S3は、高い可用性と耐久性を提供するために、オブジェクトを3つの異なるアベイラビリティーゾーンに分散して保存していて、これにより、1つのアベイラビリティーゾーンで問題が発生しても、他のアベイラビリティーゾーンでオブジェクトを引き続き利用できるため、データの損失や停止を最小限に抑えることができる。
S3のファイル操作
S3のバケットにアクセスするツールはいくつかあるが、
それぞれのツールの機能はこれらの操作に対応するか、操作の組み合わせになっている。
操作の特徴を理解しましょう。
操作 | 機能 | 制限 |
---|---|---|
GET | オブジェクトをダウンロードする (S3バケットでキーを指定) |
ファイルの一部だけをダウンロードすることも可能 |
PUT | オブジェクトをアップロードする (S3バケットでキーを指定) |
1回のPUTオペレーションで、最大5GBまでアップロードできる。 5GB以上の場合は、オブジェクトをいくつかに分けて複数回アップロードして結合する (マルチパートアップロード)。 マルチパートアップロードでは、5TBまでアップロードできる。 |
LIST | S3バケット内のオブジェクト一覧を取得する | キー名にPrefixを付けると、そのPrefixを持つオブジェクトだけに限定できる。 1回のオペレーションで、最大1,000オブジェクトまで取得できる。 |
COPY | S3内のオブジェクトを複製する | 転送はサーバー間で行われる。 異なるロケーション間でコピーすると、帯域料金が発生する。 |
DELETE | 任意のオブジェクトを削除する | 1回のオペレーションで、複数オブジェクトをまとめて削除できる。 |
HEAD | オブジェクトのメタデータを取得する | - |
RESTORE | Glacierにアーカイブされているオブジェクトを復元し、上記オペレーションを行える状態にする。 または、復元せずにSELECTオペレーションを行う。 |
- |
SELECT | CSV、JSON、Parquet形式のオブジェクトに対してSQLクエリを実行して抽出し、結果を得る。 | - |
S3: S3のアクセス管理について
アクセス管理の前に、まず!!!
S3へのアクセス方法としては、以下の4つがある。
S3へのアクセス方法
ツール名 | 説明 |
---|---|
AWS SDK | AWSが提供する公式ライブラリで、 プログラミング言語でAWSサービスを操作できる。 例えば、ユーザーがプログラミング言語でS3にアクセスする際に使用。 |
AWS CLI | LinuxやWindowsのコマンドラインでAWSサービスを操作できる。 例えば、開発や運用のエンジニアが、S3の操作をバッチにしたり、 テンプレートにしたりする際に使用される。 |
マネジメントコンソール | WebブラウザでAWSの各リソースを操作できる。 |
サードパーティー製GUIツール | 手動でAWSサービスを操作する場合に使用される。 |
S3のアクセス管理
S3のアクセス管理には、IAMポリシー、バケットポリシー、ACLの3つの方法がある。
機能 | ドキュメント形式 | 設定可能範囲 | |
---|---|---|---|
IAMポリシー | IAMユーザーやIAMロールに対してアクセス許可とアクセス拒否を制御する機能 | JSON形式 | リソースに対して、アクション、 エフェクト、条件を指定し、詳細な制御が可能 |
バケットポリシー | 特定のS3バケットにアクセスできるユーザーを指定するための機能 | JSON形式 | バケット単位でアクセス許可を設定し、ユーザーやIPアドレスなどの 条件を指定できる。 |
ACL | AWSアカウント以外のユーザーに対して許可/拒否などを設定する一覧表 | XML形式 | バケットやオブジェクトに対して、 READ, WRITE, READ_ACP, WRITE_ACP, FULL_CONTROLのいずれかの権限を、 グローバル/公開/指定したユーザー/指定したユーザーのグループに対して設定できる。 シンプルな記述が可能であるが、細かな制御はできない。 |
これら3つの方法を組み合わせて、より詳細なアクセス制御を実現することができる。
ただし、適切な設定が必要なため、注意が必要。
Discussion