ディレクトリバケット内のオブジェクトの名前の変更
RenameObject オペレーションを使用すると、データを移動することなく、S3 Express One Zone ストレージクラスを使用するディレクトリバケット内の既存のオブジェクトの名前をアトミックに変更できます。オブジェクトの名前を変更するには、既存のオブジェクトの名前をソースとして指定し、オブジェクトの新しい名前を同じディレクトリバケット内の送信先として指定します。RenameObject API オペレーションは、スラッシュ (/) 区切り文字で終わるオブジェクトでは成功しません。詳細については、「Amazon S3 オブジェクトに命名する」を参照してください。
RenameObject オペレーションは通常、オブジェクトのサイズに関係なくミリ秒単位で完了します。この機能により、ログファイル管理、メディア処理、データ分析などのアプリケーションが高速化されます。さらに、RenameObject は、ストレージクラス、暗号化タイプ、作成日、最終更新日、チェックサムプロパティなど、すべてのオブジェクトメタデータプロパティを保持します。
注記
RenameObject は、S3 Express One Zone ストレージクラスに保存されているオブジェクトでのみサポートされています。
RenameObject オペレーションへのアクセスを許可するには、セッションベースの認可に CreateSession オペレーションを使用することをお勧めします。具体的には、バケットポリシーまたはアイデンティティベースのポリシーのディレクトリバケットに s3express:CreateSession アクセス許可を付与します。次に、ディレクトリバケットで CreateSession API コールを行い、セッショントークンを取得します。リクエストヘッダーのセッショントークンを使用すると、このオペレーションに対して API リクエストを行うことができます。セッショントークンの有効期限が切れたら、別の CreateSession API コールを実行して、新しいセッショントークンを生成して使用します。AWS CLI と AWS SDK は、セッションの有効期限が切れたときのサービス中断を避けるために、セッショントークンを自動的に更新するなど、セッションを作成および管理します。認可の詳細については、「Amazon S3 API リファレンス」の「CreateSession」を参照してください。ゾーンエンドポイント API オペレーションの詳細については、「CreateSession を使用したゾーンエンドポイント API オペレーションの承認」を参照してください。
既存のオブジェクトを上書きしない場合は、RenameObject リクエストに ‘*’ 値を含む If-None-Match 条件付きヘッダーを追加できます。オブジェクト名が既に存在する場合、Amazon S3 は 412 Precondition Failed エラーを返します。詳細については、「Amazon S3 API リファレンス」の「RenameObject」を参照してください。
RenameObject は、AWS CloudTrail にログ記録されるゾーンエンドポイント API オペレーション (オブジェクトレベルまたはデータプレーンオペレーション) です。CloudTrail を使用して、ディレクトリバケット内のオブジェクトで実行された RenameObject オペレーションに関する情報を収集できます。詳細については、「ディレクトリバケットの AWS CloudTrail を使用したログ記録」と「ディレクトリバケットの CloudTrail ログファイルの例」を参照してください。
S3 Express One Zone は RenameObject をサポートする唯一のストレージクラスで、S3 Express One Zone の PUT、COPY、POST、および LIST リクエスト (1,000 リクエストあたり) と同じ料金です。詳細については、「Amazon S3 の料金
オブジェクトの名前の変更
ディレクトリバケット内のオブジェクトの名前を変更するには、Amazon S3 コンソール、AWS CLI、AWS SDK、REST API、または Mountpoint for Amazon S3 (バージョン 1.19.0 以降) を使用できます。
ディレクトリバケット内のオブジェクトの名前を変更するには
AWS Management Console にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/
を開きます。 -
ナビゲーションペインで [バケット] を選択してから、[ディレクトリバケット] タブを選択します。名前を変更するオブジェクトが含まれる Amazon S3 ディレクトリバケットに移動します。
-
名前を変更するオブジェクトのチェックボックスをオンにします。
-
[アクション] メニューで [オブジェクトの名前変更] を選択します。
-
[新しいオブジェクト名] ボックスに、オブジェクトの新しい名前を入力します。
注記
既存のオブジェクトと同じオブジェクト名を指定すると、オペレーションは失敗し、Amazon S3 は
412 Precondition Failedエラーを返します。オブジェクトキー名の長さは 1,024 バイトを超えることはできません。オブジェクト名に含まれるプレフィックスは、長さの合計にカウントされます。 [オブジェクトの名前変更] を選択します。Amazon S3 によりオブジェクトの名前が変更されます。
この rename-object の例では、AWS CLI を使用してオブジェクトの名前を変更する方法を示します。これらのコマンドを実行するには、ユーザー入力プレースホルダーを独自の情報に置き換えます
次の例は、ソースオブジェクトの ETag の条件付きチェックを使用してオブジェクトの名前を変更する方法を示しています。
aws s3api rename-object \ --bucketamzn-s3-demo-bucket--usw2-az1--x-s3\ --keynew-file.txt\ --rename-sourceoriginal-file.txt\ --source-if-match "\"a1b7c3d2e5f6\""
このコマンドは次のことを行います。
amzn-s3-demo-bucket--usw2-az1--x-s3ディレクトリバケットのオブジェクトの名前をoriginal-file.txtからnew-file.txtに変更します。ソースオブジェクトの ETag が「
a1b7c3d4e5f6」と一致する場合にのみ、名前変更を実行します。
ETag が一致しない場合、オペレーションは 412
Precondition Failed エラーで失敗します。
次の例は、新しい指定されたオブジェクト名の条件付きチェックを使用してオブジェクトの名前を変更する方法を示しています。
aws s3api rename-object \ --bucketamzn-s3-demo-bucket--usw2-az1--x-s3\ --keynew-file.txt\ --rename-sourceamzn-s3-demo-bucket--usw2-az1--x-s3/original-file.txt\ --destination-if-none-match "\"e5f3g7h8i9j0\""
このコマンドは次のことを行います。
amzn-s3-demo-bucket--usw2-az1--x-s3ディレクトリバケットのオブジェクトの名前をoriginal-file.txtからnew-file.txtに変更します。オブジェクトが存在し、オブジェクトの ETag が 「
e5f3g7h8i9j0」と一致しない場合のみ、名前変更オペレーションを実行します。
新しい指定された名前と一致する ETag を持つオブジェクトが既に存在する場合、オペレーションは 412 Precondition Failed エラーで失敗します。
REST リクエストを送信してオブジェクトの名前を変更できます。詳細については、「Amazon S3 API リファレンス」の「RenameObject」を参照してください。
1.19.0 以降のバージョンでは、Mountpoint for Amazon S3 は S3 Express One Zone でオブジェクトの名前変更をサポートしています。Mountpoint の詳細については、「Mountpoint for Amazon S3 の使用」を参照してください。