Я работаю над Lambda, которому нужно перечислить объекты в корзине S3 и создать URL-адрес на основе файлов * item.Key.Проблема, к которой я быстро подхожу, состоит в том, что скоро в корзине будет более 1000 элементов.
В настоящее время я использую for
, чтобы вернуть только последний файл, который содержит определенный элемент. Ключ:
resp, err := s3Client.ListObjects(&s3.ListObjectsInput{Bucket: aws.String(bucket)})
if err != nil {
fmt.Printf("Unable to list items in bucket %q, %v", bucket, err)
}
for _, item := range resp.Contents {
if strings.Contains(*item.Key, "/output.txt") {
lastItem = *item
}
}
s := fmt.Sprintf("https://s3.%s.amazonaws.com/%s/%s", region, bucket, *lastItem.Key)
fmt.Println(s)
Насколько я понимаю, как только корзина достигает более 1000 элементов, 1000-й элемент будет возвращаться каждый раз при запуске лямбды.
По умолчанию элементы корзины возвращаются самыми старыми в первую очередь.можно увидеть, что это список предметов по самым новым первым и остановка for
после первого предмета.Возможно ли это?
Если нет, кто-нибудь еще решил подобную проблему?