获取对象列表

  • ListObjects

ListObjects操作用于列出bucket中的全部object,该操作返回最多1000个对象信息,可以通过设置过滤条件来列出bucket中符合特定条件的对象信息。

代码示例:

// 列出桶里面的全部对象
func ListObjects(svc *s3.S3) {
    listObjectsInput := &s3.ListObjectsInput{
        Bucket: aws.String("exampleBucket"),
    }

    ListObjectsOutput, err := svc.ListObjects(listObjectsInput)
    if err != nil {
        fmt.Printf("fail to list objects of bucket. %v\n", err)
    }
    for _, object := range ListObjectsOutput.Contents {
        fmt.Println(*object.Key)
    }
}

ListObjectsInput可设置的参数如下:

参数 类型 说明 是否必要
Bucket *string bucket的名称。
Delimiter *string 与Prefix参数一起用于对对象key进行分组的字符。所有key包含指定的Prefix且第一次出现Delimiter字符的对象作为一组。如果没有指定Prefix参数,按Delimiter对所有对象key进行分割,多个对象分割后从对象key开始到第一个Delimiter之间相同的部分形成一组。
EncodingType *string 用于设置response中object key的字符编码类型。
Marker *string 指定一个标识符,返回的对象的key将是按照字典顺序排序后位于该标识符之后的所有对象。
MaxKeys *int64 设置response中返回object key的数量,默认值和最大值均为1000。
Prefix *string 限定返回对象的key必须以Prefix作为前缀。

ListObjectsOutput返回的属性如下:

属性名 类型 说明
CommonPrefixes []*CommonPrefix 当请求中设置了Delimiter和Prefix属性时,所有包含指定的Prefix且第一次出现Delimiter字符的对象key作为一组。
Contents []*Object 对象数据,每个对象包含了Entity Tag、Key、LastModifiedTime、Owner和Size等信息。
Delimiter *string 与请求中设置的Delimiter一致。
EncodingType *string 返回对象key的字符编码类型。
IsTruncated *bool 当为false时表示返回结果中包含了全部符合本次请求查询条件的对象信息,否则只返回了数量为MaxKeys个的对象信息。
Marker *string 与请求中设置的Marker一致。
MaxKeys *int64 本次返回结果中包含的对象数量的最大值。
Name *string 执行本操作的桶名称。
NextMarker *string 当返回结果中的IsTruncated为true时,可以使用NextMarker作为下次查询的Marker,继续查询出下一部分的对象信息。
Prefix *string 与请求中设置的Prefix一致。
  • ListObjectsRequest

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

代码示例:

func ListObjectRequest(svc *s3.S3) {
    listObjectsInput := &s3.ListObjectsInput{
        Bucket: aws.String("exampleBucket"),
    }
    req, resp := svc.ListObjectsRequest(listObjectsInput)

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

响应结果:

HTTP状态 响应码 描述
200 Success 操作成功。
403 AccessDenied 用户没有权限执行操作。
404 NoSuchBucket 操作指定的桶不存在。