🐈‍⬛

【AWS】S3とは? クラウドストレージの基本を理解する

2023/11/27に公開

はじめに

AWS (Amazon Web Services) の中でも非常に重要なサービスの一つである「Amazon Simple Storage Service (S3)」は、クラウドストレージソリューションであり、データの安全でスケーラブルな保存を提供します。

クラウドストレージの基本原則

クラウドストレージは、データをオンライン上で保存し、必要なときにアクセスできる仕組みです。
従来のオンプレミスのデータストレージと異なり、クラウドストレージはインターネットを介してデータにアクセスします。これにより、柔軟性が向上し、スケーラビリティが向上します。
クラウドストレージを使えば大容量のデータもスムーズにやりとりすることができます。

3つのストレージタイプ

  • ブロックストレージ: 主にSCSIでアクセス
  • ファイルストレージ: 主にSMB/NFSでアクセス、階層構造
  • オブジェクトストレージ: 主にHTTP/HTTPSでアクセス、大容量のデータ保存

オブジェクトストレージとは

主にHTTP/HTTPSでアクセスし、一意のキーに対するオブジェクト(データ)が存在します。
上記のファイルストレージとは異なり、階層構造ではなくフラットな構造になっています。
スケールが容易で大容量のデータを保存するのに適しており、オブジェクト単位でのアクセス制御や高い可用性耐障害性を備えています。

S3とは何か

Amazon S3は、オブジェクトベースのデータストレージサービスであり、スケーラブルで安全なデータ保存を提供します。

特徴

  • 耐久性
    99.999999999%(イレブンナイン)
    最低3つのアベイラビリティゾーン(AZ)で冗長化
  • スケーラビリティ
    無制限のデータ保存
    1オブジェクトは最大5TBの制限
  • 低コスト
  • セキュリティ
    ログ監査とアクセス制御
  • データの保護
    誤削除を防止する機能
  • アクセシビリティ
    HTTP/HTTPSでアップロード、ダウンロード、変更、削除の操作が可能
  • 他のAWSサービスとの容易な連携

S3のセキュリティ

データの転送中と保管時におけるデータの暗号化を提供しています。
ユーザーベース/リソースベースのポリシーによるアクセス制御。
APIコールの記録はAWS CloudTrailと連携することで記録することができます。

AWSサービスとの連携

S3は様々なAWSサービスと連携することも可能です。

  • 分析系サービスのデータソースに使う
    Amazon Athena, Amazon EMR, Amazon Redshift
  • スナップショットをS3に保存する
    Amazon Elastic Block Store, Amazon Relational Database Service

他にも様々なAWSサービスと連携してコンテンツ配信やデータレイクとしての活用など、多様なワークロードに利用することができます。

S3のポイント

バケット

バケットは、S3でオブジェクト(データ)を保存するためのコンテナです。
全世界的に一意である必要があり、AWSのリージョンに作成されます。
バケットは、1つのアカウントで最大100個まで作成することができますが、増加リクエストで最大1000個まで引き上げることが可能です。
バケットに保存することができるオブジェクト(データ)の数は無制限です。

  • バケットの命名規則
    3~63文字で構成
    小文字、数字、ドット、ハイフンのみ使用可能
    バケット名は小文字または数字で開始/終了すること
    バケット名はxn--から開始できない
    バケット名は-s3aliasで終了できない
    連続するドットは含めない
    IPアドレスの形式(192.168.0.2)にしない

オブジェクト

オブジェクトとはファイルとそのファイルを記述するメタデータです。
キーを用いてバケット内のオブジェクトを識別するので、オブジェクトを取得する時はキーを使用します。
1つのオブジェクトの最大容量は5TBです。

上記の例だと、keiya-miura-memoがバケットでhoge/huga/image.pngがキーになります。

フォルダ

オブジェクトを階層構造のように見せることができますが、実際にはフラットです。
例えばkeiya-miura-memo/hoge/huga/image.pngの場合、keiya-miura-memoがバケットでhogeとhugaがフォルダになります。
あくまでも、フォルダのように見えるだけで単なる文字列です。

強力な整合性

かつてのS3は結果整合性で、古いバージョンのオブジェクトを受け取る可能性がありました。

現在のS3は強力な整合性で、新しいオブジェクトの書き込みや既存のオブジェクトの上書きリクエストが成功した後、読み込みリクエストはオブジェクトの最新版を受け取ることができます。

S3のストレージクラス

S3はストレージクラスを使い分けることでコストを最適化することができます。

  • Standard
    アクセス頻度の高いデータ向け。
  • Standard Infrequent Access
    アクセス頻度が低いデータ向け。
    長期保存、バックアップ、災害対策ファイルなどに適している。
  • One Zone IA
    アクセス頻度が低く、耐障害性が低くても構わないデータ向け。
  • Glacier Instant Retrieval
    アクセスがほぼなく、即時に取り出しが必要な長期保存データ向け。
  • Glacier Flexible Retrieval
    アクセスがほぼなく、即時の取り出しを必要としない長期保存データ向け。
  • Glacier Deep Archive
    アクセスがほぼなく、取り出しに長時間かかっても良い長期保存データ向け。
  • Intelligent Tiering
    アクセスパターンが予測できないデータ向け。
  • Outposts
    オンプレミスで保存したいデータ向け。

参考

https://aws.amazon.com/jp/s3/

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/UsingObjects.html

https://aws.amazon.com/jp/s3/storage-classes/

Discussion