Amazon S3 - kin-kin/memo GitHub Wiki

AWS

Amazon S3

  • オブジェクトストレージ
    • オブジェクト単位で保存(変更時は全部)
      • ⇔ ブロックストレージはブロック単位で保存(変更時はブロックのみ)
    • 単発、依存関係なしで保存
      • ⇔ ファイルストレージはグループ化、階層構造で保存
  • ストレージクラス
    • 標準
      • 耐久性は99.999999999%(イレブンナイン)
        • リージョン内の少なくとも3つのアベイラビリティーゾーンにデータを複製
    • 標準 - 低頻度アクセス
      • 耐久性は99.999999999%(イレブンナイン)
        • リージョン内の少なくとも3つのアベイラビリティーゾーンにデータを複製
      • データの読み出し容量に対して課金
    • 1ゾーン - 低頻度アクセス
      • 耐久性は99.999999999%(イレブンナイン)
        • リージョン内の少なくとも1つのアベイラビリティーゾーンにデータを複製
      • データの読み出し容量に対して課金
    • Intelligent-Tiering
      • 耐久性は99.999999999%(イレブンナイン)
        • リージョン内の少なくとも3つのアベイラビリティーゾーンにデータを複製
      • 30日間アクセスがないオブジェクトは低頻度のアクセス階層に移動される
  • バケット
    • Key-Value形式のオブジェクトストレージ
    • アカウントにつき最大で100個のバケットを作成可能
    • 全リージョンで一意の名前が必要
    • オブジェクトの数とデータ総量は無制限
      • 1オブジェクトの最大サイズは5TB
    • サーバサイドで暗号化することが可能
    • バージョニング可能
    • ライフサイクル管理が可能
    • デフォルトではリソースを作成したAWSアカウントのみがアクセス可能
    • オブジェクトには仮想ホスト方式でアクセスするのが望ましい
      • DNSでアクセス制御しやすく、エイリアスでバケット名を隠蔽可能
      • 仮想パス方式は2020年から使用不可
    • 公開・非公開のデータを混在させないのが望ましい
    • ランダムな文字列をファイル名のプレフィックス設定するとパフォーマンスがよい
  • マルチパートアップロード
    • 5GBを超えるオブジェクトに必要
    • AWS SDKはアップロード時にチェックサムをチェックしている
    • リトライ時はExponential Backoffに基づいて行われる(AWS SDKは内部で実装)
      • 待機時間を指数関数的に伸ばす
  • 結果整合性
  • バケットポリシー
    • ACLよりも主流
    • 他のAWSアカウントのユーザに対してもアクセス権を設定可能
  • ACL
  • 静的ウェブサイトホスティング
    • WordPressでは画像の保存先をS3にすると、画像のURLがオフロードされる
  • 署名付きURL
    • AWS CLIかAWS SDKで生成する

References