Mencantumkan objek dalam bucket dengan dukungan Penentuan Versi - Amazon Simple Storage Service

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

Mencantumkan objek dalam bucket dengan dukungan Penentuan Versi

Bagian ini memberikan contoh daftar versi objek dari bucket dengan dukungan Penentuan Versi. Amazon S3 menyimpan informasi versi objek dalam subsumber daya versi yang dikaitkan dengan bucket. Untuk informasi selengkapnya, lihat Opsi konfigurasi bucket. Untuk mencantumkan objek dalam bucket dengan dukungan Penentuan Versi, Anda memerlukan izin ListBucketVersions.

Ikuti langkah-langkah ini untuk menggunakan konsol Amazon S3 guna melihat berbagai versi objek.

Untuk melihat beberapa versi objek
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di dalam daftar Bucket, pilih nama bucket yang berisi objek.

  3. Untuk melihat daftar versi objek di bucket, pilih tombol Tampilkan versi.

    Untuk setiap versi objek, konsol menunjukkan ID versi unik, tanggal dan waktu versi objek dibuat, dan properti lainnya. (Objek yang disimpan di bucket sebelum Anda mengatur status Penentuan Versi memiliki ID versi null.)

    Untuk mencantumkan objek tanpa versi, pilih tombol Buat daftar versi.

Anda juga dapat melihat, mengunduh, dan menghapus versi objek di panel ikhtisar objek di konsol. Untuk informasi selengkapnya, lihat Melihat gambaran umum objek di konsol Amazon S3.

catatan

Untuk mengakses versi objek yang lebih lama dari 300 versi, Anda harus menggunakan AWS CLI atau URL objek.

penting

Anda dapat membatalkan penghapusan objek hanya jika objek tersebut dihapus sebagai versi terbaru (saat ini). Anda tidak dapat membatalkan penghapusan objek versi sebelumnya. Untuk informasi selengkapnya, lihat Menggunakan Penentuan Versi dalam bucket S3.

Contoh dalam bagian ini menunjukkan cara mengambil daftar objek dari bucket dengan dukungan Penentuan Versi. Setiap permintaan akan menampilkan hingga 1.000 versi, kecuali jika Anda menentukan nomor yang lebih rendah. Jika bucket berisi lebih banyak versi dari batas ini, Anda mengirimkan serangkaian permintaan untuk mengambil daftar semua versi. Proses mengembalikan hasil dalam "halaman” disebut penomoran halaman.

Untuk menunjukkan cara kerja penomoran halaman, contoh membatasi masing-masing respons pada dua versi objek. Setelah mengambil halaman pertama dari hasil, masing-masing contoh memeriksa untuk menentukan apakah daftar versi terpotong. Jika iya, contoh ini terus mengambil halaman hingga semua versi diambil.

catatan

Contoh berikut juga bekerja dengan bucket tanpa Penentuan Versi aktif, atau untuk objek yang tidak memiliki versi tersendiri. Dalam kasus tersebut, Amazon S3 mengembalikan daftar objek dengan ID versi null.

Untuk informasi tentang menggunakan AWS SDK lain, lihat Pusat AWS Pengembang.

Java

Untuk petunjuk cara membuat dan menguji sampel yang berfungsi, lihat Memulai di Panduan AWS SDK for Java Pengembang.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListVersionsRequest; import com.amazonaws.services.s3.model.S3VersionSummary; import com.amazonaws.services.s3.model.VersionListing; public class ListKeysVersioningEnabledBucket { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Retrieve the list of versions. If the bucket contains more versions // than the specified maximum number of results, Amazon S3 returns // one page of results per request. ListVersionsRequest request = new ListVersionsRequest() .withBucketName(bucketName) .withMaxResults(2); VersionListing versionListing = s3Client.listVersions(request); int numVersions = 0, numPages = 0; while (true) { numPages++; for (S3VersionSummary objectSummary : versionListing.getVersionSummaries()) { System.out.printf("Retrieved object %s, version %s\n", objectSummary.getKey(), objectSummary.getVersionId()); numVersions++; } // Check whether there are more pages of versions to retrieve. If // there are, retrieve them. Otherwise, exit the loop. if (versionListing.isTruncated()) { versionListing = s3Client.listNextBatchOfVersions(versionListing); } else { break; } } System.out.println(numVersions + " object versions retrieved in " + numPages + " pages"); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Memulai SDK for .NET di AWSAWS SDK for .NET Developer Guide.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ListObjectsVersioningEnabledBucketTest { static string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main(string[] args) { s3Client = new AmazonS3Client(bucketRegion); GetObjectListWithAllVersionsAsync().Wait(); } static async Task GetObjectListWithAllVersionsAsync() { try { ListVersionsRequest request = new ListVersionsRequest() { BucketName = bucketName, // You can optionally specify key name prefix in the request // if you want list of object versions of a specific object. // For this example we limit response to return list of 2 versions. MaxKeys = 2 }; do { ListVersionsResponse response = await s3Client.ListVersionsAsync(request); // Process response. foreach (S3ObjectVersion entry in response.Versions) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } // If response is truncated, set the marker to get the next // set of keys. if (response.IsTruncated) { request.KeyMarker = response.NextKeyMarker; request.VersionIdMarker = response.NextVersionIdMarker; } else { request = null; } } while (request != null); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }
contoh — Mencantumkan semua versi objek dalam bucket

Untuk mencantumkan semua versi dari objek dalam bucket, Anda menggunakan subsumber daya versions di permintaan GET Bucket. Amazon S3 dapat mengambil maksimum 1.000 objek, dan setiap versi objek dihitung sepenuhnya sebagai objek. Oleh karena itu, jika bucket berisi dua kunci (misalnya, photo.gif dan picture.jpg), dan kunci pertama memiliki 990 versi dan kunci kedua memiliki 400 versi, satu permintaan akan mengambil seluruh 990 versi photo.gif dan hanya 10 versi terbaru dari picture.jpg.

Amazon S3 mengembalikan versi objek dalam urutan penyimpanannya, dengan versi yang disimpan paling akhir dikembalikan terlebih dahulu.

Di permintaan GET Bucket, sertakan subsumber daya versions.

GET /?versions HTTP/1.1 Host: bucketName.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 +0000 Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
contoh — Mengambil semua versi kunci

Untuk mengambil subset versi objek, Anda menggunakan parameter permintaan untuk GET Bucket. Untuk informasi selengkapnya, lihat GET Bucket.

  1. Atur parameter prefix ke kunci objek yang ingin Anda ambil.

  2. Kirim permintaan GET Bucket menggunakan subsumber daya versions dan prefix.

    GET /?versions&prefix=objectName HTTP/1.1

contoh — Mengambil objek menggunakan prefiks

Contoh berikut mengambil objek yang kuncinya adalah atau dimulai dengan myObject.

GET /?versions&prefix=myObject HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Anda dapat menggunakan parameter permintaan lain untuk mengambil subset semua versi objek. Untuk informasi selengkapnya, lihat GET Bucket dalam Referensi API Amazon Simple Storage Service.

contoh — Mengambil daftar objek tambahan jika respons terpotong

Jika jumlah objek yang dapat dikembalikan dalam permintaan GET melebihi nilai max-keys, respons mengandung <isTruncated>true</isTruncated>, dan menyertakan kunci pertama (dalam NextKeyMarker) dan ID versi pertama (dalam NextVersionIdMarker) yang memenuhi permintaan, tetapi tidak dikembalikan. Anda menggunakan nilai yang dikembalikan sebagai posisi awal pada permintaan berikutnya untuk mengambil objek tambahan yang memenuhi permintaan GET.

Gunakan proses berikut untuk mengambil objek tambahan yang sesuai dengan permintaan GET Bucket versions dari bucket. Untuk informasi selengkapnya tentang key-marker, version-id-marker, NextKeyMarker, dan NextVersionIdMarker, lihat GET Bucket di Referensi API Amazon Simple Storage Service.

Berikut ini adalah tanggapan tambahan yang memenuhi permintaan GET asli:

  • Tetapkan nilai dari key-marker ke kunci yang dikembalikan di NextKeyMarker dalam respons sebelumnya.

  • Tetapkan nilai dari version-id-marker ke ID versi yang dikembalikan di NextVersionIdMarker dalam respons sebelumnya.

  • Kirim permintaan GET Bucket versions menggunakan key-marker dan version-id-marker.

contoh — Mengambil objek yang dimulai dengan kunci dan ID versi tertentu
GET /?versions&key-marker=myObject&version-id-marker=298459348571 HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Perintah berikut mengembalikan metadata tentang semua versi objek dalam bucket.

aws s3api list-object-versions --bucket example-s3-bucket1

Untuk informasi selengkapnya tentang list-object-versions, lihat list-object-versions di Referensi Perintah AWS CLI .