Amazon S3 バケット内オブジェクトの上書きコピー後、タイムスタンプが変更されない方法を教えてください

2023.12.02

困っていること

デフォルトキー (SSE-S3) で暗号化された S3 バケットを KMS で全データを上書きコピーしようと考えています。しかしながら上書きコピーによりタイムスタンプが変わってしまい既存で動いているジョブや AWS Lambda 等に影響が発生する可能性がございました。
そのため、タイムスタンプを以前のままに変更されない方法があれば教えてください。

どう対応すればいいの?

システム定義のメタデータは仕様上により、オブジェクト作成日または最終更新日のいずれか遅い方が記録されるため、ユーザー側でタイムスタンプの変更や保持することは叶いません。

代替案

システム定義のメタデータの変更は叶いませんが、ユーザー定義のメタデータにタイムスタンプ値を保持可能なので、こちらをご検討ください

やってみた

ドキュメント記載の手順を参考に、ユーザー定義のメタデータにタイムスタンプ値を保持してみました。

1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。
2. [バケット] リストで、メタデータを追加するオブジェクトが含まれるバケットの名前を選択します。

3. [オブジェクト] リストで、メタデータを追加するオブジェクト名の横にあるチェックボックスをオンにします。
4. [アクション] メニューで、[メタデータの編集] を選択します。

5. リストされたオブジェクトを確認し、[メタデータの追加] を選択します。

6. メタデータの [タイプ] には [ユーザー定義] を選択します。

7. x-amz-meta- に続いて、一意のカスタム [キー] を入力します。メタデータの [Value (値)] も入力します。
今回は例として、[キー: x-amz-meta-time] [Value (値): 2023/12/1 10:00 PM JST]

8. さらにメタデータを追加するには、[Add metadata (メタデータの追加)] を選択します。[削除] をクリックして、タイプ、キー、値のセットを削除することもできます。

9. [変更の保存] を選択します。

参考資料