View a markdown version of this page

Mengganti nama objek dalam bucket direktori - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengganti nama objek dalam bucket direktori

Dengan menggunakan RenameObject operasi ini, Anda dapat mengubah nama objek yang ada secara atomik dalam bucket direktori yang menggunakan kelas penyimpanan S3 Express One Zone, tanpa pergerakan data apa pun. Anda dapat mengganti nama objek dengan menentukan nama objek yang ada sebagai sumber dan nama baru objek sebagai tujuan dalam bucket direktori yang sama. Operasi RenameObject API tidak akan berhasil pada objek yang diakhiri dengan karakter pembatas garis miring (/). Untuk informasi selengkapnya, lihat Menamaan objek Amazon S3.

RenameObjectOperasi biasanya selesai dalam milidetik terlepas dari ukuran objek. Kemampuan ini mempercepat aplikasi seperti manajemen file log, pemrosesan media, dan analisis data. Selain ituRenameObject, mempertahankan semua properti metadata objek, termasuk kelas penyimpanan, jenis enkripsi, tanggal pembuatan, tanggal modifikasi terakhir, dan properti checksum.

catatan

RenameObjecthanya didukung untuk objek yang disimpan di kelas penyimpanan S3 Express One Zone.

Untuk memberikan akses ke RenameObject operasi, sebaiknya gunakan CreateSession operasi untuk otorisasi berbasis sesi. Secara khusus, Anda s3express:CreateSession memberikan izin ke bucket direktori dalam kebijakan bucket atau kebijakan berbasis identitas. Kemudian, Anda membuat panggilan CreateSession API pada bucket direktori untuk mendapatkan token sesi. Dengan token sesi di header permintaan Anda, Anda dapat membuat permintaan API untuk operasi ini. Setelah token sesi berakhir, Anda membuat panggilan CreateSession API lain untuk menghasilkan token sesi baru untuk digunakan. AWS CLI dan AWS SDK akan membuat dan mengelola sesi Anda termasuk menyegarkan token sesi secara otomatis untuk menghindari gangguan layanan ketika sesi berakhir. Untuk informasi selengkapnya tentang otorisasi, lihat CreateSession di Referensi API Amazon S3. Untuk mempelajari selengkapnya tentang operasi API titik akhir Zonal, lihat Mengotor isasi operasi API titik akhir Zonal dengan. CreateSession

Jika Anda tidak ingin mengganti objek yang ada, Anda dapat menambahkan header ber If-None-Match syarat dengan nilai ‘*’ dalam RenameObject permintaan. Amazon S3 mengembalikan 412 Precondition Failed kesalahan jika nama objek sudah ada. Untuk informasi selengkapnya, lihat RenameObject di Referensi API Amazon S3.

RenameObjectadalah operasi API titik akhir Zonal (operasi tingkat objek atau bidang data) yang dicatat. AWS CloudTrail Anda dapat menggunakan CloudTrail untuk mengumpulkan informasi tentang RenameObject operasi yang dilakukan pada objek Anda dalam bucket direktori. Untuk informasi selengkapnya, lihat Logging dengan AWS CloudTrail untuk bucket direktori dan contoh file CloudTrail log untuk bucket direktori.

S3 Express One Zone adalah satu-satunya kelas penyimpanan yang mendukungRenameObject, yang harganya sama denganPUT,, COPYPOST, dan LIST permintaan (per 1.000 permintaan) di S3 Express One Zone. Untuk informasi selengkapnya, lihat Harga Amazon S3.

Mengganti nama objek

Untuk mengganti nama objek di bucket direktori Anda, Anda dapat menggunakan konsol Amazon S3, AWS CLI, AWS SDK, REST API atau Mountpoint untuk Amazon S3 (versi 1.19.0 atau lebih tinggi).

Untuk mengganti nama objek dalam bucket direktori
  1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi, pilih Buckets, lalu pilih tab bucket direktori. Arahkan ke bucket direktori Amazon S3 yang berisi objek yang ingin Anda ganti nama.

  3. Pilih kotak centang untuk objek yang ingin Anda ganti nama.

  4. Pada menu T indakan, pilih U bah nama objek.

  5. Di kotak Nama objek baru, masukkan nama baru untuk objek.

    catatan

    Jika Anda menentukan nama objek yang sama dengan objek yang ada, operasi akan gagal dan Amazon S3 mengembalikan 412 Precondition Failed kesalahan. Panjang nama kunci objek tidak boleh melebihi 1.024 byte. Awalan yang disertakan dalam nama objek dihitung terhadap panjang total.

  6. Pilih G anti nama objek. Amazon S3 mengganti nama objek Anda.

rename-objectContoh menunjukkan bagaimana Anda dapat menggunakan AWS CLI untuk mengganti nama objek. Untuk menjalankan perintah ini, ganti user input placeholders dengan informasi Anda sendiri

Contoh berikut menunjukkan cara mengganti nama objek dengan pemeriksaan kondisional pada ETag objek sumber.

aws s3api rename-object \ --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \ --key new-file.txt \ --rename-source original-file.txt \ --source-if-match "\"a1b7c3d2e5f6\""

Perintah ini melakukan hal berikut:

  • Mengganti nama objek dari original-file.txt ke new-file.txt dalam bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Hanya melakukan penggantian nama jika ETag objek sumber cocok dengan "a1b7c3d4e5f6”.

Jika ETag tidak cocok, operasi akan gagal dengan 412 Precondition Failed kesalahan.

Contoh berikut menunjukkan cara mengganti nama objek dengan pemeriksaan kondisional pada nama objek baru yang ditentukan.

aws s3api rename-object \ --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \ --key new-file.txt \ --rename-source amzn-s3-demo-bucket--usw2-az1--x-s3/original-file.txt \ --destination-if-none-match "\"e5f3g7h8i9j0\""

Perintah ini melakukan hal berikut:

  • Mengganti nama objek dari original-file.txt ke new-file.txt dalam bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Hanya melakukan operasi ganti nama jika objek ada dan ETag objek tidak cocok "e5f3g7h8i9j0”.

Jika objek sudah ada dengan nama baru yang ditentukan dan ETag yang cocok, operasi akan gagal dengan 412 Precondition Failed kesalahan.

SDK for Java

Anda dapat menggunakan AWS SDK untuk Java untuk mengganti nama objek Anda. Untuk menggunakan contoh-contoh ini, ganti user input placeholders dengan informasi Anda sendiri

Contoh berikut menunjukkan cara membuat RenameObjectRequest menggunakan AWS SDK untuk Java

String key = "key"; String newKey = "new-key"; String expectedETag = "e5f3g7h8i9j0"; RenameObjectRequest renameRequest = RenameObjectRequest.builder() .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3) .key(newKey) .renameSource(key) .destinationIfMatch(e5f3g7h8i9j0) .build();

Kode ini melakukan hal berikut:

  • Buat permintaan untuk mengganti nama objek dari "key" menjadi "new-key" di bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Termasuk kondisi bahwa penggantian nama hanya akan terjadi jika ETag objek cocok dengan "e5f3g7h8i9j0”.

  • Jika ETag tidak cocok atau objek tidak ada, operasi akan gagal.

Contoh berikut menunjukkan cara membuat kondisi RenameObjectRequest tanpa kecocokan menggunakan AWS SDK untuk Java.

String key = "key"; String newKey = "new-key"; String noneMatchETag = "e5f3g7h8i9j0"; RenameObjectRequest renameRequest = RenameObjectRequest.builder() .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3) .key(newKey) .renameSource(key) .destinationIfNoneMatch(noneMatchETag) .build();

Kode ini melakukan hal berikut:

  • Membuat permintaan untuk mengganti nama objek dari "key" menjadi "new-key" di bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Termasuk kondisi menggunakan .destinationIfNoneMatch(noneMatchETag) yang memastikan penggantian nama hanya akan terjadi jika ETag objek tujuan tidak cocok dengan "e5f3g7h8i9j0”.

Operasi akan gagal dengan 412 Precondition Failed kesalahan jika objek ada dengan nama baru yang ditentukan dan memiliki ETag yang ditentukan.

SDK for Python

Anda dapat menggunakan SDK untuk Python untuk mengganti nama objek Anda. Untuk menggunakan contoh ini, ganti user input placeholders dengan informasi Anda sendiri.

Contoh berikut menunjukkan cara mengganti nama objek menggunakan AWS SDK untuk Python (Boto3).

def basic_rename(bucket, source_key, destination_key): try: s3.rename_object( Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3, Key=destination_key, RenameSource=f"{source_key}" ) print(f"Successfully renamed {source_key} to {destination_key}") except ClientError as e: print(f"Error renaming object: {e}")

Kode ini melakukan hal berikut:

  • Mengganti nama objek dari source_key ke destination_key dalam bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Mencetak pesan sukses jika penggantian nama objek Anda berhasil atau mencetak pesan kesalahan jika gagal.

Contoh berikut menunjukkan cara mengganti nama objek dengan DestinationIfNoneMatch kondisi SourceIfMatch dan menggunakan AWS SDK untuk Python (Boto3).

def rename_with_conditions(bucket, source_key, destination_key, source_etag, dest_etag): try: s3.rename_object( Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3, Key=destination_key, RenameSource=f"{amzn-s3-demo-bucket--usw2-az1--x-s3}/{source_key}", SourceIfMatch=source_ETag, DestinationIfNoneMatch=dest_ETag ) print(f"Successfully renamed {source_key} to {destination_key} with conditions") except ClientError as e: print(f"Error renaming object: {e}")

Kode ini melakukan hal berikut:

  • Melakukan operasi penggantian nama bersyarat dan menerapkan dua kondisi, SourceIfMatch danDestinationIfNoneMatch. Kombinasi kondisi ini memastikan bahwa objek belum dimodifikasi dan bahwa objek belum ada dengan nama baru yang ditentukan.

  • Mengganti nama objek dari source_key ke destination_key dalam bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Mencetak pesan sukses jika penggantian nama objek berhasil, atau mencetak pesan kesalahan jika gagal atau jika kondisi tidak terpenuhi.

SDK for Rust

Anda dapat menggunakan SDK untuk Rust untuk mengganti nama objek Anda. Untuk menggunakan contoh ini, ganti user input placeholders dengan informasi Anda sendiri.

Contoh berikut menunjukkan cara mengganti nama objek dalam bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori menggunakan SDK untuk Rust.

async fn basic_rename_example(client: &Client) -> Result<(), Box<dyn Error>> { let response = client .rename_object() .bucket(" amzn-s3-demo-bucket--usw2-az1--x-s3") .key("new-name.txt") // New name/path for the object .rename_source("old-name.txt") // Original object name/path .send() .await?; Ok(()) }

Kode ini melakukan hal berikut:

  • Membuat permintaan untuk mengganti nama objek dari "old-name.tx" menjadi "new-name.txt" di bucket amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Mengembalikan Result tipe untuk menangani potensi kesalahan.

Anda dapat mengirim permintaan REST untuk mengganti nama objek. Untuk informasi selengkapnya, lihat RenameObject di Referensi API Amazon S3.

Dimulai dengan versi 1.19.0 atau lebih tinggi, Mountpoint untuk Amazon S3 mendukung penggantian nama objek di S3 Express One Zone. Untuk informasi selengkapnya tentang Mountpoint, lihat Bek erja dengan Mountpoint.