

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
<a name="list-obj-version-enabled-bucket"></a>

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 tujuan umum](UsingBucket.md#bucket-config-options-intro). Untuk mencantumkan objek dalam bucket dengan dukungan Penentuan Versi, Anda memerlukan izin `ListBucketVersions`.

## Menggunakan konsol S3
<a name="view-object-versions"></a>

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

**Untuk melihat beberapa versi objek**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

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

1. 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 properti objek di konsol Amazon S3](view-object-properties.md).

**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 [Mempertahankan beberapa versi objek dengan Versi S3](Versioning.md).

## Menggunakan AWS SDKs
<a name="list-obj-version-enabled-bucket-sdk-examples"></a>

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 yang lain AWS SDKs, lihat [Pusat AWS Pengembang](https://aws.amazon.com/code/). 

------
#### [ Java ]

Untuk petunjuk cara membuat dan menguji sampel yang berfungsi, lihat [Memulai](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) di Panduan AWS SDK untuk 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](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .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);
            }
        }
    }
}
```

------

## Penggunaan API REST
<a name="ListingtheObjectsinaVersioningEnabledBucket"></a>

**Example — 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`.  

```
1. GET /?versions HTTP/1.1
2. Host: bucketName.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 +0000
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

**Example — Mengambil semua versi kunci**  
 Untuk mengambil subset versi objek, Anda menggunakan parameter permintaan untuk `GET Bucket`. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html).   

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

1. Kirim permintaan `GET Bucket` menggunakan subsumber daya `versions` dan `prefix`.

   `GET /?versions&prefix=objectName HTTP/1.1`

**Example — Mengambil objek menggunakan prefiks**  
Contoh berikut mengambil objek yang kuncinya adalah atau dimulai dengan `myObject`.  

```
1. GET /?versions&prefix=myObject HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```
Anda dapat menggunakan parameter permintaan lain untuk mengambil subset semua versi objek. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) dalam *Referensi API Amazon Simple Storage Service*.

**Example — 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 [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) 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`.

**Example — Mengambil objek yang dimulai dengan kunci dan ID versi tertentu**  

```
1. GET /?versions&key-marker=myObject&version-id-marker=298459348571 HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

## Menggunakan AWS CLI
<a name="list-obj-version-enabled-bucket-cli"></a>

Perintah berikut mengembalikan metadata tentang semua versi objek dalam bucket. 

```
aws s3api list-object-versions --bucket amzn-s3-demo-bucket1
```

Untuk informasi selengkapnya tentang `list-object-versions`, lihat [https://docs.aws.amazon.com/cli/latest/reference/s3api/list-object-versions.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-object-versions.html) di *Referensi Perintah AWS CLI *.