设置版本控制

Bucket是用于存储对象(Object)的容器,所有的对象都必须隶属于某个Bucket。本文介绍如何设置桶(Bucket)的版本控制状态。

  • PutBucketVersioning

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

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

代码示例:

// 设置桶的版本控制状态
func PutBucketVersioning(svc *s3.S3) {
    putBucketVersioningInput := &s3.PutBucketVersioningInput{
        Bucket: aws.String("exampleBucket"),
        VersioningConfiguration: &s3.VersioningConfiguration{
            Status:    aws.String("Enabled"), //启用版本控制:Enabled,暂停版本控制:Suspended
        },
    }

    _, err := svc.PutBucketVersioning(putBucketVersioningInput)
    if err != nil {
        fmt.Printf("fail to put bucket versioning. %v\n", err)
        return
    }
}

PutBucketVersioningInput可设置的参数如下:

参数 类型 说明 是否必要
Bucket *string bucket的名称。
VersioningConfiguration *VersioningConfiguration 封装了设置版本控制状态的参数。
  • PutBucketVersioningRequest

PutBucketVersioningRequest操作首先生成一个"request.Request"对象,该对象是一个执行PutBucketVersioning操作的请求。通过调用Request对象的Send方法完成配置bucket版本控制信息的操作。该方法可以生成定制化的请求,例如自定义请求头部请求超时重试设置。

代码示例:

func PutBucketVersioningRequest(svc *s3.S3) {
    putBucketVersioningInput := &s3.PutBucketVersioningInput{
        Bucket: aws.String("exampleBucket"),
        VersioningConfiguration: &s3.VersioningConfiguration{
            Status:    aws.String("Enabled"), //启用版本控制
        },
    }
    req, resp := svc.PutBucketVersioningRequest(putBucketVersioningInput)

    err := req.Send()
    if err != nil {
        fmt.Printf("fail to put bucket versioning request. %v\n", err)
    } else {
        fmt.Println(resp)
    }
}

响应结果:

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