Mengganti nama objek dalam ember 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 ember direktori

Dengan menggunakan RenameObject operasi ini, Anda dapat mengganti nama objek yang ada secara atomik di 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 Menamai 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 itu, RenameObject 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, kami sarankan Anda menggunakan CreateSession operasi untuk otorisasi berbasis sesi. Secara khusus, Anda memberikan s3express:CreateSession izin ke bucket direktori dalam kebijakan bucket atau kebijakan berbasis identitas. Kemudian, Anda melakukan panggilan CreateSession API di bucket direktori untuk mendapatkan token sesi. Dengan token sesi di header permintaan Anda, Anda dapat membuat permintaan API untuk operasi ini. Setelah token sesi kedaluwarsa, Anda membuat panggilan CreateSession API lain untuk menghasilkan token sesi baru untuk digunakan. AWS CLI dan AWS SDKs 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 CreateSessiondi Referensi API Amazon S3. Untuk mempelajari lebih lanjut tentang operasi API titik akhir Zonal, lihat Mengotorisasi operasi API titik akhir Zonal dengan. CreateSession

Jika Anda tidak ingin menimpa objek yang ada, Anda dapat menambahkan header If-None-Match bersyarat dengan nilai ‘*’ dalam permintaan. RenameObject 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 ember direktori. Untuk informasi selengkapnya, lihat Logging with 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 dapat menggunakan konsol Amazon S3, AWS CLI AWS SDKs, REST API, atau Mountpoint untuk Amazon S3 (versi 1.19.0 atau lebih tinggi).

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

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

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

  4. Pada menu Tindakan, pilih Ganti nama objek.

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

    catatan

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

  6. Pilih Ganti 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 bersyarat pada objek sumber. ETag

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 \ --source-if-match "\"a1b7c3d2e5f6\""

Perintah ini melakukan hal berikut:

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

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

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

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

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 ember amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

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

Jika objek sudah ada dengan nama yang ditentukan baru dan pencocokan ETag, 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 for 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 ember amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

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

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

Contoh berikut menunjukkan cara membuat RenameObjectRequest dengan kondisi none-match menggunakan AWS SDK for 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 ember amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

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

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

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 for 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"{amzn-s3-demo-bucket--usw2-az1--x-s3}/{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 ember 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 SourceIfMatch dan DestinationIfNoneMatch kondisi menggunakan AWS SDK for 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 dan. DestinationIfNoneMatch Kombinasi kondisi ini memastikan bahwa objek belum dimodifikasi dan bahwa objek belum ada dengan nama yang ditentukan baru.

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

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

SDK for Rust

Anda dapat menggunakan SDK for 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 di 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 ember amzn-s3-demo-bucket--usw2-az1--x-s3 direktori.

  • Mengembalikan Result jenis 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 lebih lanjut tentang Mountpoint, lihat Bekerja dengan Mountpoint.