

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

# Mengaktifkan Penentuan Versi pada bucket
<a name="manage-versioning-examples"></a>

Gunakan Penentuan Versi S3 untuk menyimpan beberapa versi dari sebuah objek di dalam satu bucket. Bagian ini memberikan contoh cara mengaktifkan pembuatan versi pada bucket menggunakan konsol, REST API AWS SDKs, dan AWS Command Line Interface ()AWS CLI. 

**catatan**  
Setelah mengaktifkan pembuatan versi pada bucket untuk pertama kalinya, mungkin diperlukan waktu hingga 15 menit agar perubahan menyebar sepenuhnya di seluruh sistem S3. Selama waktu ini, `GET` permintaan untuk objek yang dibuat atau diperbarui setelah mengaktifkan versi dapat mengakibatkan kesalahan. `HTTP 404 NoSuchKey` Sebaiknya tunggu 15 menit setelah mengaktifkan pembuatan versi sebelum melakukan operasi penulisan (`PUT`atau`DELETE`) apa pun pada objek di bucket. Masa tunggu ini membantu menghindari potensi masalah dengan visibilitas objek dan pelacakan versi.

Untuk informasi selengkapnya tentang Penentuan Versi S3, lihat [Mempertahankan beberapa versi objek dengan Versi S3](Versioning.md). Untuk informasi tentang cara bekerja dengan objek yang ada di bucket dengan dukungan Penentuan Versi, lihat [Bekerja dengan objek di dalam bucket dengan dukungan Penentuan Versi](manage-objects-versioned-bucket.md).

Untuk mempelajari lebih lanjut cara menggunakan Penentuan Versi S3 untuk melindungi data, lihat [Tutorial: Melindungi data di Amazon S3 dari penghapusan yang tidak disengaja atau bug aplikasi menggunakan Penentuan Versi S3, Kunci Objek S3, dan Replikasi S3](https://aws.amazon.com/getting-started/hands-on/protect-data-on-amazon-s3/?ref=docs_gateway/amazons3/manage-versioning-examples.html).

Setiap bucket S3 yang Anda buat memiliki subsumber daya *Penentuan Versi* yang terkait dengannya. (Untuk informasi selengkapnya, lihat [Opsi konfigurasi bucket tujuan umum](UsingBucket.md#bucket-config-options-intro).) Secara default, bucket Anda *tanpa versi*, dan subsumber daya Penentuan Versi menyimpan konfigurasi Penentuan Versi yang kosong, sebagai berikut.

```
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</VersioningConfiguration>
```

Untuk mengaktifkan Penentuan Versi, Anda dapat mengirimkan permintaan ke Amazon S3 dengan konfigurasi Penentuan Versi yang menyertakan status. 

```
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
  <Status>Enabled</Status> 
</VersioningConfiguration>
```

Untuk menangguhkan Penentuan Versi, Anda menetapkan nilai status ke `Suspended`.

Pemilik bucket dan semua pengguna sah dapat mengaktifkan Penentuan Versi. Pemilik bucket adalah Akun AWS yang membuat bucket (akun root). Untuk informasi selengkapnya tentang izin, lihat [Identity and Access Management untuk Amazon S3](security-iam.md).

Bagian berikut memberikan detail lebih lanjut tentang mengaktifkan Versi S3 menggunakan konsol,, AWS CLI dan. AWS SDKs

## Menggunakan konsol S3
<a name="enable-versioning"></a>

Ikuti langkah-langkah ini untuk menggunakan fitur Konsol Manajemen AWS untuk mengaktifkan pembuatan versi pada bucket S3.

**Untuk mengaktifkan atau menonaktifkan pembuatan versi pada bucket tujuan umum S3**

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 panel navigasi kiri, pilih **Bucket tujuan umum**.

1. Dalam daftar bucket, pilih nama bucket yang ingin Anda aktifkan pembuatan versi.

1. Pilih **Properti**.

1. Di bawah **Penentuan Versi Bucket**, pilih **Edit**.

1. Pilih **Tangguhkan** atau **Aktifkan**, lalu pilih **Simpan perubahan**.

**catatan**  
Anda dapat menggunakan otentikasi AWS multi-faktor (MFA) dengan pembuatan versi. Saat Anda menggunakan MFA dengan pembuatan versi, Anda harus memberikan kunci akses dan kode yang valid dari perangkat MFA akun untuk menghapus versi objek secara permanen atau menangguhkan atau mengaktifkan kembali pembuatan versi. Akun AWS  
Untuk menggunakan MFA dengan Penentuan Versi, Anda mengaktifkan `MFA Delete`. Namun, Anda tidak dapat mengaktifkan `MFA Delete` menggunakan Konsol Manajemen AWS. Anda harus menggunakan AWS Command Line Interface (AWS CLI) atau API. Untuk informasi selengkapnya, lihat [Mengonfigurasi penghapusan MFA](MultiFactorAuthenticationDelete.md).

## Menggunakan AWS CLI
<a name="manage-versioning-examples-cli"></a>

Contoh berikut memungkinkan pembuatan versi pada bucket tujuan umum S3. 

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled
```

Contoh berikut memungkinkan penghapusan S3 Versioning dan multi-factor authentication (MFA) pada bucket untuk perangkat MFA fisik. Untuk perangkat MFA fisik, dalam `--mfa` parameter, berikan rangkaian nomor seri perangkat MFA, karakter spasi, dan nilai yang ditampilkan pada perangkat otentikasi Anda.

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "SerialNumber 123456"
```

Contoh berikut memungkinkan penghapusan S3 Versioning dan multi-factor authentication (MFA) pada bucket untuk perangkat MFA virtual. Untuk perangkat MFA virtual, dalam `--mfa` parameter, berikan rangkaian perangkat MFA ARN, karakter spasi, dan nilai yang ditampilkan pada perangkat otentikasi Anda.

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "arn:aws:iam::account-id:mfa/root-account-mfa-device 123789"
```

**catatan**  
Menggunakan penghapusan MFA memerlukan perangkat autentikasi fisik atau virtual disetujui. Untuk informasi selengkapnya tentang menggunakan penghapusan MFA di Amazon S3, lihat [Mengonfigurasi penghapusan MFA](MultiFactorAuthenticationDelete.md).

*Untuk informasi selengkapnya tentang mengaktifkan versi menggunakan AWS CLI, lihat [put-bucket-versioning](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-versioning.html)di Command Reference.AWS CLI *

## Menggunakan AWS SDKs
<a name="manage-versioning-examples-sdk"></a>

Contoh berikut memungkinkan pembuatan versi pada bucket dan kemudian mengambil status pembuatan versi menggunakan dan. AWS SDK untuk Java AWS SDK untuk .NET Untuk informasi tentang menggunakan yang lain AWS SDKs, lihat [Pusat AWS Pengembang](https://aws.amazon.com/code/).

------
#### [ .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 System;
using Amazon.S3;
using Amazon.S3.Model;

namespace s3.amazon.com.rproxy.goskope.com.docsamples
{
    class BucketVersioningConfiguration
    {
        static string bucketName = "*** bucket name ***";

        public static void Main(string[] args)
        {
            using (var client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1))
            {
                try
                {
                    EnableVersioningOnBucket(client);
                    string bucketVersioningStatus = RetrieveBucketVersioningConfiguration(client);
                }
                catch (AmazonS3Exception amazonS3Exception)
                {
                    if (amazonS3Exception.ErrorCode != null &&
                        (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId")
                        ||
                        amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
                    {
                        Console.WriteLine("Check the provided AWS Credentials.");
                        Console.WriteLine(
                        "To sign up for service, go to http://aws.amazon.com/s3");
                    }
                    else
                    {
                        Console.WriteLine(
                         "Error occurred. Message:'{0}' when listing objects",
                         amazonS3Exception.Message);
                    }
                }
            }

            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }

        static void EnableVersioningOnBucket(IAmazonS3 client)
        {

                PutBucketVersioningRequest request = new PutBucketVersioningRequest
                {
                    BucketName = bucketName,
                    VersioningConfig = new S3BucketVersioningConfig 
                    {
                        Status = VersionStatus.Enabled
                    }
                };

                PutBucketVersioningResponse response = client.PutBucketVersioning(request);
        }


        static string RetrieveBucketVersioningConfiguration(IAmazonS3 client)
        {
                GetBucketVersioningRequest request = new GetBucketVersioningRequest
                {
                    BucketName = bucketName
                };
 
                GetBucketVersioningResponse response = client.GetBucketVersioning(request);
                return response.VersioningConfig.Status;
            }
    }
}
```

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

Untuk petunjuk tentang cara membuat dan menguji sampel kerja, lihat [Memulai](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) di Panduan AWS SDK untuk Java Pengembang.

```
import java.io.IOException;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;

public class BucketVersioningConfigurationExample {
    public static String bucketName = "*** bucket name ***"; 
    public static AmazonS3Client s3Client;

    public static void main(String[] args) throws IOException {
        s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
        s3Client.setRegion(Region.getRegion(Regions.US_EAST_1));
        try {

            // 1. Enable versioning on the bucket.
        	BucketVersioningConfiguration configuration = 
        			new BucketVersioningConfiguration().withStatus("Enabled");
            
			SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest = 
					new SetBucketVersioningConfigurationRequest(bucketName,configuration);
			
			s3Client.setBucketVersioningConfiguration(setBucketVersioningConfigurationRequest);
			
			// 2. Get bucket versioning configuration information.
			BucketVersioningConfiguration conf = s3Client.getBucketVersioningConfiguration(bucketName);
			 System.out.println("bucket versioning configuration status:    " + conf.getStatus());

        } catch (AmazonS3Exception amazonS3Exception) {
            System.out.format("An Amazon S3 error occurred. Exception: %s", amazonS3Exception.toString());
        } catch (Exception ex) {
            System.out.format("Exception: %s", ex.toString());
        }        
    }
}
```

------
#### [ Python ]

Contoh kode Python berikut membuat bucket Amazon S3, mengaktifkannya untuk Penentuan Versi, dan mengonfigurasi siklus hidup yang membuat versi objek nonterkini kedaluwarsa setelah 7 hari.

```
def create_versioned_bucket(bucket_name, prefix):
    """
    Creates an Amazon S3 bucket, enables it for versioning, and configures a lifecycle
    that expires noncurrent object versions after 7 days.

    Adding a lifecycle configuration to a versioned bucket is a best practice.
    It helps prevent objects in the bucket from accumulating a large number of
    noncurrent versions, which can slow down request performance.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket_name: The name of the bucket to create.
    :param prefix: Identifies which objects are automatically expired under the
                   configured lifecycle rules.
    :return: The newly created bucket.
    """
    try:
        bucket = s3.create_bucket(
            Bucket=bucket_name,
            CreateBucketConfiguration={
                "LocationConstraint": s3.meta.client.meta.region_name
            },
        )
        logger.info("Created bucket %s.", bucket.name)
    except ClientError as error:
        if error.response["Error"]["Code"] == "BucketAlreadyOwnedByYou":
            logger.warning("Bucket %s already exists! Using it.", bucket_name)
            bucket = s3.Bucket(bucket_name)
        else:
            logger.exception("Couldn't create bucket %s.", bucket_name)
            raise

    try:
        bucket.Versioning().enable()
        logger.info("Enabled versioning on bucket %s.", bucket.name)
    except ClientError:
        logger.exception("Couldn't enable versioning on bucket %s.", bucket.name)
        raise

    try:
        expiration = 7
        bucket.LifecycleConfiguration().put(
            LifecycleConfiguration={
                "Rules": [
                    {
                        "Status": "Enabled",
                        "Prefix": prefix,
                        "NoncurrentVersionExpiration": {"NoncurrentDays": expiration},
                    }
                ]
            }
        )
        logger.info(
            "Configured lifecycle to expire noncurrent versions after %s days "
            "on bucket %s.",
            expiration,
            bucket.name,
        )
    except ClientError as error:
        logger.warning(
            "Couldn't configure lifecycle on bucket %s because %s. "
            "Continuing anyway.",
            bucket.name,
            error,
        )

    return bucket
```

------