S3 オブジェクトのバージョン管理

  • S3 オブジェクトのバージョン管理は、意図しない上書きや削除から保護するために使用できます。
  • バージョン管理は、同じバケット内のオブジェクトの複数のバリアントを保持するのに役立ち、Amazon S3 バケットに格納されているすべてのオブジェクトのすべてのバージョンを保存、取得、および復元するために使用できます。
  • バージョン管理では、同じオブジェクトの複数のコピーが全体として保持され、1GB のファイルに対して複数のバージョンの料金が発生します。
  • バージョン管理は既定では有効になっておらず、各バケットに対して明示的に有効にする。
  • 一度有効にしたバージョン管理は無効にすることはできず、一時停止のみ可能です。
  • バケットで有効になっているバージョン管理は、バケット内のすべてのオブジェクトに適用されます。
  • アクセス許可はバージョンレベルで設定されます。各バージョンには、独自のオブジェクト所有者があります。オブジェクトバージョンを作成する AWS アカウントは、所有者です。そのため、同じオブジェクトの異なる* バージョンに対して異なるアクセス許可を設定できます。
  • バージョニングに関係なく、バケット内の各オブジェクトにはバージョンがあります。
    • バージョン管理されていないバケットの場合、各オブジェクトの version ID は null です。
    • バージョン管理されたバケットの場合、各オブジェクトに対して一意の version ID が割り当てられます。
  • バージョン管理では、version ID はバケット名とオブジェクトキーと共にバケット内のオブジェクトの一意性を定義するためのキー要素を形成します。
  • オブジェクトの取得
    • バージョンなしバケットの場合
      • オブジェクトの取得は常に使用可能な唯一のオブジェクトを返します。
    • バージョニングされたバケットの場合
      • オブジェクトの取得は、現在のオブジェクトを返します。
      • 現在のオブジェクト以外は、バージョン ID を指定して取得できます。
  • オブジェクトの追加
    • バージョンなしバケットの場合
      • 同じキーを持つオブジェクトを再度アップロードすると、オブジェクトが上書きされます。
    • バージョニングされたバケットの場合
      • 同じキーを持つオブジェクトがアップロードされた場合、新しいアップロードしたオブジェクトは現在のバージョンになり、前のオブジェクトは現在のバージョンになります。
      • 現在のバージョン管理されていないオブジェクトを取得して復元することにより、偶発的な上書きから保護することができます。
  • バケット内のオブジェクトが削除された場合
    • バージョンなしバケットの場合
      • オブジェクトは完全に削除され、回復できません。
    • バージョニングされたバケットの場合
      • すべてのバージョンがバケットに残り、Amazon は現在のバージョンになる削除マーカーを挿入します。
      • 現在のバージョン管理されていないオブジェクトを取得して復元できるため、偶発的な上書きから保護することができます。
      • 特定のバージョン ID を持つオブジェクトが削除されると、永続的な削除が行われ、オブジェクトを復元できなくなります。
  • マーカーの削除
    • Delete マーカーオブジェクトには、キーとバージョン ID だけが関連付けられたデータまたは ACL はありません。
    • 現在のバージョンとして削除マーカーを持つバケット上のオブジェクトの取得は、404を返します。
    • 削除マーカーオブジェクトに対して削除操作のみが許可されます。
    • 削除マーカーオブジェクトがバージョン ID を指定して削除された場合、前のバージョン以外のオブジェクトは現在のバージョンオブジェクトになります。
    • 削除要求が現在のバージョンとして Delete マーカーを使用してバケットで発生した場合、Delete マーカーオブジェクトは削除されませんが、Delete マーカーが再び追加されます。
  • 以前のバージョンの復元
    • オブジェクトの以前のバージョンを同じバケットにコピーします。コピーしたオブジェクトはそのオブジェクトの現在のバージョンになり、すべてのオブジェクトのバージョンが保持されます。あなたはまだすべてのバージョンを維持するように推奨
    • オブジェクトの現在のバージョンを完全に削除します。現在のオブジェクトのバージョンを削除すると、実際には、以前のバージョンがそのオブジェクトの現在のバージョンに変換されます。
  • 保留バケットのバージョン管理
    • バージョン管理を中断して、バケット内の同じオブジェクトの新しいバージョンの課金を停止できます。
    • バケット内の既存のオブジェクトは変更されず、今後の要求の動作の変更のみ。
    • 新しいオブジェクト追加ごとに、バージョン ID が null のオブジェクトが追加されます。
    • 同じキー名を持つオブジェクトを追加するたびに、バージョン ID が null のオブジェクトが上書きされます。
    • オブジェクトの取得要求は、常にオブジェクトの現在のバージョンを返します。
    • バケットの delete 要求は、バージョン ID の null オブジェクトを完全に削除し、削除マーカーを挿入します。
    • バージョン ID が null のオブジェクトがバケットにない場合、削除要求は何も削除しません。
    • 削除要求は、バージョン ID が格納されている以前のオブジェクトの特定のバージョン番号でも起動できます。
  • MFA の削除
    • 追加のセキュリティを有効にするには、バケットを構成して MFA (多要素認証) の削除を有効にします。
    • バケットの MFA 削除を有効にして、バケット内のデータが誤って削除されないようにすることができます。
    • バケット所有者は、バケット (root アカウント) を作成した AWS アカウントと、すべての承認された IAM ユーザーがバージョン管理を有効にできますが、バケット所有者 (root アカウント) のみが MFA 削除を有効にすることができます。

AWS認定試験の練習問題

  • 質問はインターネットから収集され、答えは自分の知識と理解に基づいてマークされます(これはあなたと異なる場合があります)。
  • AWSサービスは毎日更新され、回答と質問はすぐに時代遅れになる可能性がありますので、それに応じて調査してください。
  • AWSのアップデートのペースを追うためにAWS試験の質問は更新されないため、基礎となる機能が変更されても質問が更新されないことがあります。
  • さらなるフィードバック、ディスカッション、修正を可能にします。
  1. Amazon S3 の機能のセットは、偶発的なデータ損失を防止し、回復するのに役立ちます?
    1. オブジェクトライフサイクルとサービスアクセスログ
    2. オブジェクトのバージョン管理と多要素認証
    3. アクセス制御とサーバー側の暗号化
    4. ウェブサイトのホスティングと Amazon S3 ポリシー
  2. S3 を使用して、グループ内の複数のユーザーが現在、S3 バケットに対する完全な権限を持っている会社の重要なデータを格納します。ユーザーに影響を与えず、オブジェクトの偶発的な削除に対しても保護するソリューションを提供する必要があります。この問題に対処する2つのオプションはどれですか。2つの回答を選択
    1. S3 バケットのバージョン管理を有効にする
    2. MFA の削除を有向にして S3 バケットを設定する
    3. バケットポリシーを作成し、バケットレベルのすべてのユーザーに対する読み取り専用アクセス許可のみを許可する
    4. オブジェクトのライフサイクルポリシーを有効にし、3か月以上前のデータを氷河にアーカイブするように構成する
  3. 誤った削除と偶発的な上書きの両方から S3 データを保護するには?
    1. バケットの S3 バージョン管理を有効にする
    2. 署名付き URL のみを使用して S3 データにアクセスする
    3. IAM バケットポリシーを使用して S3 削除を無効にする
    4. S3 の冗長性ストレージの削減を有効にする
    5. マルチファクタ認証 (MFA) 保護されたアクセスを有効にする
  4. ユーザーが S3 バケットのバージョン管理を有効にしていません。バケット内のオブジェクトのバージョン ID はどのようになりますか?
    1. 0
    2. 添付されているバージョンはありません
    3. null
    4. 空白
  5. ユーザーは、バージョン管理に関して S3 バケットの状態を検索しようとしています。以下の状態のうち、AWS は照会時に返されないものはどれですか?
    1. バージョン管理が有効
    2. バージョン管理が中断
    3. バージョン管理されていない
    4. バージョン管理されいている

Jayendra’s Blog

この記事は自己学習用に「AWS S3 Object Versioning(Jayendra’s Blogより)」を日本語に訳した記事です。