获取对象列表
- 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 | 操作指定的桶不存在。 |