获取桶信息

Bucket是用于存储对象(Object)的容器,所有的对象都必须隶属于某个Bucket。本文介绍如何获取桶(Bucket)信息。

  • HeadBucket

    HeadBucket操作查询bucket是否存在,用户可以使用该操作查询一个bucket是否存在且是否拥有对其访问权限。执行HeadBucket操作需要具有执行ListBucket操作的权限,bucket的拥有者默认拥有该权限并且可以将该权限授予其他用户。

    代码示例:

// 查询一个bucket是否存在并且拥有对其访问权限
func HeadBucket(svc *s3.S3) {
    headBucketInput := &s3.HeadBucketInput{
        Bucket: aws.String("exampleBucket"),
    }
    _, err := svc.HeadBucket(headBucketInput)

    if err != nil {
        fmt.Printf("fail to head bucket, %v\n", err)
        return
    }
}

HeadBucketInput可设置的参数如下:

参数 类型 说明 是否必要
Bucket *string bucket的名称。
  • HeadBucketRequest

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

代码示例:

func HeadBucketRequest(svc *s3.S3) {
    headBucketInput := &s3.HeadBucketInput{
        Bucket: aws.String("exampleBucket"),
    }
    req, resp := svc.HeadBucketRequest(headBucketInput)

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

 响应结果:

HTTP状态 响应码 描述
200 Success bucket存在且可以访问。
403 Forbidden 用户没有权限执行操作。
404 NoSuchBucket 操作指定的bucket不存在。