Mengaktifkan Penentuan Versi pada bucket - Amazon Simple Storage Service

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

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

Saat Anda mengaktifkan Penentuan Versi pada bucket untuk pertama kalinya, mungkin diperlukan beberaoa saat agar perubahan dapat dilakukan sepenuhnya. Saat perubahan ini menyebar, Anda mungkin mengalami HTTP 404 NoSuchKey kesalahan intermiten untuk permintaan ke objek yang dibuat atau diperbarui setelah mengaktifkan versi. Kami menyarankan Anda menunggu selama 15 menit setelah mengaktifkan Penentuan Versi sebelum mengeluarkan operasi tulis (PUT atau DELETE) pada objek di dalam bucket.

Untuk informasi selengkapnya tentang Penentuan Versi S3, lihat Mempertahankan beberapa versi objek dengan S3 Versioning. 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.

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.

Setiap bucket S3 yang Anda buat memiliki subsumber daya Penentuan Versi yang terkait dengannya. (Untuk informasi selengkapnya, lihat Opsi konfigurasi bucket.) 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.

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

Ikuti langkah-langkah ini untuk menggunakan fitur AWS Management Console untuk mengaktifkan pembuatan versi pada bucket S3.

Untuk mengaktifkan atau menonaktifkan pembuatan versi pada bucket tujuan umum S3
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di panel navigasi kiri, pilih Bucket tujuan umum.

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

  4. Pilih Properti.

  5. Di bawah Penentuan Versi Bucket, pilih Edit.

  6. 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 AWS Management Console. Anda harus menggunakan AWS Command Line Interface (AWS CLI) atau API. Untuk informasi selengkapnya, lihat Mengonfigurasi penghapusan MFA.

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 mengaktifkan penghapusan Penentuan Versi S3 dan autentikasi multi-faktor (MFA) pada bucket.

aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "SERIAL 123456"
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.

Untuk informasi selengkapnya tentang mengaktifkan versi menggunakan AWS CLI, lihat put-bucket-versioningdi Command Reference.AWS CLI

Contoh berikut memungkinkan pembuatan versi pada bucket dan kemudian mengambil status pembuatan versi menggunakan dan. AWS SDK for Java AWS SDK for .NET Untuk informasi tentang menggunakan lainnya AWS SDKs, lihat Pusat AWS Pengembang.

.NET

Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Memulai SDK for .NET di AWSAWS SDK for .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 di Panduan AWS SDK for 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