ディレクトリバケット内のオブジェクトの名前の変更
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 \ --bucket
amzn-s3-demo-bucket--usw2-az1--x-s3
\ --keynew-file.txt
\ --rename-sourceamzn-s3-demo-bucket--usw2-az1--x-s3
/original-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 \ --bucket
amzn-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 の使用」を参照してください。