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.
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
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Di panel navigasi kiri, pilih Bucket tujuan umum.
-
Dalam daftar bucket, pilih nama bucket yang ingin Anda aktifkan pembuatan versi.
-
Pilih Properti.
-
Di bawah Penentuan Versi Bucket, pilih Edit.
-
Pilih Tangguhkan atau Aktifkan, lalu pilih Simpan perubahan.
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
"
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