Varsayılan AWS S3 API, bir kovadan nesne almak için 1000 sabit sınıra sahiptir ancak bu sorunun üstesinden gelen bir V2 API vardır. Belirli ad yapısıyla eşleşen dosyaları aldığımız aşağıdaki örneğe bakın - yyyy-mm-dd-hh-mm-ss.json. Eşleşmeyi görmezden gelebilir ve dilerseniz her şeyi alabilirsiniz.


Örnek


var keyRegex = regexp.MustCompile(`^\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.json$`)

type S3 struct {
client *s3.S3
}

func (s S3) FetchSomeObjects(ctx context.Context, bucket string) ([]*domain.SomeObject, error) {
var (
pageNum int
objects []*domain.SomeObject
)

err := s.client.ListObjectsV2PagesWithContext(ctx, &s3.ListObjectsV2Input{Bucket: bucket},
func(page *s3.ListObjectsV2Output, isLastPage bool) bool {
pageNum++

for _, object := range page.Contents {
if keyRegex.MatchString(*object.Key) {
objects = append(objects, &domain.SomeObject{Key: *object.Key})
}
}

return pageNum < 100
},
)
if err != nil {
return nil, err
}

return objects, nil
}