douhuanglou1445 2018-01-31 05:17
浏览 379
已采纳

ListObjects始终返回1000个对象的列表。 我们可以列出按日期排序的对象吗?

I am using aws-doc-sdk-examples/go/example_code/s3 example code to list out objects in my s3 bucket.

Following two folders are created by default in bucket:

bucket-logs/AWSLogs/accountxxx/CloudTrail-Digest/
bucket-logs/AWSLogs/accountxxx/CloudTrail/

Both folders have sub folders like

/us-region-1/[year]/[month]/[day]/

I am using below GoLang code:

package main

import (
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
    "fmt"
    "os"
)

func main() {
    if len(os.Args) != 2 {
        exitErrorf("Bucket name required
Usage: %s bucket_name",
            os.Args[0])
    }

    bucket := os.Args[1]

    sess, err := session.NewSession(&aws.Config{
        Region: aws.String("us-east-1")},
    )

    svc := s3.New(sess)

    resp, err := svc.ListObjects(&s3.ListObjectsInput{Bucket: aws.String(bucket), })
    if err != nil {
        exitErrorf("Unable to list items in bucket %q, %v", bucket, err)
    }

    for _, item := range resp.Contents {
        fmt.Println("Name:         ", *item.Key)
        fmt.Println("Last modified:", *item.LastModified)
        fmt.Println("Size:         ", *item.Size)
        fmt.Println("Storage class:", *item.StorageClass)
        fmt.Println("")
    }

    fmt.Println("Found", len(resp.Contents), "items in bucket", bucket)
    fmt.Println("")
}

func exitErrorf(msg string, args ...interface{}) {
    fmt.Fprintf(os.Stderr, msg+"
", args...)
    os.Exit(1)
}

The above code always returning 1000 object from bucket-logs/AWSLogs/accountxxx/CloudTrail-Digest/ Whereas I want to list objects from bucket-logs/AWSLogs/accountxxx/CloudTrail/ folder.

Can we do this. Can we filter list object sorted by year/month/date?

Any help ?

EDIT:

I am running the Go programm using the below cli command

./s3_list_objects bucket-logs
  • 写回答

1条回答 默认 最新

  • duanbiao4025 2018-01-31 06:00
    关注

    You will need to add prefix in ListObjectsInput. Check out this https://stackoverflow.com/a/43737253/1225070

    params := &s3.ListObjectsInput { 
        Bucket: aws.String("bucket"), 
        Prefix: aws.String("root/subfolder"), 
    } 
    

    Hope this will help you.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?