设置版本控制

PutBucketVersioning操作可以设置bucket版本控制状态。bucket的版本控制状态可以设置为以下的值:

  • Enabled:对bucket中的所有对象启用版本控制,之后每个添加到bucket中的对象都会被设置一个唯一的version ID。
  • Suspended:关闭bucket的版本控制,之后每个添加到bucket中的对象的version ID会被设置为null。

代码示例:

using System;
using System.Threading.Tasks;
using Amazon.Runtime;
using Amazon.S3;
using Amazon.S3.Model;

namespace DotNetSDK.BucketOperation
{
    public class PutBucketVersioningExample
    {
        public static async Task PutBucketVersioning()
        {
            var accessKey = "YOUR_ACCESS_KEY";
            var secretKey = "YOUR_SECRET_KEY";
            var endpoint = "YOUR_ENDPOINT";
            var bucketName = "EXAMPLE_BUCKET";
            try
            {
                var credentials = new BasicAWSCredentials(accessKey, secretKey);
                var conf = new AmazonS3Config
                {
                    ServiceURL = endpoint
                };
                var s3Client = new AmazonS3Client(credentials, conf);
                var putBucketVersioningRequest = new PutBucketVersioningRequest()
                {
                    BucketName = bucketName,
                    VersioningConfig = new S3BucketVersioningConfig()
                    {
                        Status = VersionStatus.Enabled
                    }
                };

                var result = await s3Client.PutBucketVersioningAsync(putBucketVersioningRequest);
                if (result.HttpStatusCode != System.Net.HttpStatusCode.OK)
                {
                    Console.WriteLine("fail to put versioning config to bucket {0}, HttpStatusCode:{1}, ErrorCode:{2}.", bucketName, (int) result.HttpStatusCode, result.HttpStatusCode);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}

PutBucketVersioningRequest可设置的参数如下:

参数 类型 说明 是否必要
BucketName string bucket的名称。
VersioningConfig S3BucketVersioningConfig 封装了设置版本控制状态的参数。

响应结果:

HTTP状态码 响应码 描述
200 OK 操作成功。如果操作指定的bucket不存在也返回200状态码。
403 Forbidden 用户没有权限执行操作。