boto3 python — список объектов

#python #amazon-web-services #amazon-s3 #boto3

Вопрос:

При попытке перечислить объекты с префиксом возвращается только 1 объект в моей Лямбде. Не уверен, чего не хватает.

 import boto3
s3 = boto3.resource('s3')
def lambda_handler(event, context):
    try:  
        ## Bucket to use
        bucket = s3.Bucket(mybucket)
        ## List objects within a given prefix
        for obj in bucket.objects.filter(Prefix='output/group1'):
            print(obj.key)
   
 

Комментарии:

1. Ваш код неполон и не выполняется. Например mybucket , не назначается. Попробуйте протестировать код boto3 локально перед развертыванием в качестве лямбда-кода.

2. Привет, Вольфганг .. У меня это определено, но я устранил эту строку при загрузке кода.

3. Кстати, я сталкиваюсь с какой-то другой проблемой, когда запускаю boto3 локально. Он не может найти мои учетные данные, даже если они присутствуют в файле учетных данных aws cli. я проверяю, существует ли мой профиль как в конфигурации, так и в учетных данных . Запускал aws configure несколько раз.

4. Этот код определяет функцию lambda_handler , но она никогда не вызывается. Где/как это называется?

5. Где print появляется вывод? В aws cloudwatch?

Ответ №1:

Трудно понять, в чем именно заключается проблема, когда мы не видим допустимой функции или каких-либо возвращенных ошибок. Этот код работает для меня без проблем:

 import boto3
s3 = boto3.resource('s3')
def lambda_handler(event, context):
    bucket = s3.Bucket('your-bucket-name')
    for obj in bucket.objects.filter(Prefix='output/group1'):
        print(obj.key)
lambda_handler('event','context')
 

Убедитесь, что в «выводе/группе 1» на самом деле содержится более 1 файла для возврата.

Комментарии:

1. Код выполняется без ошибок, но он не содержит списка всех объектов, только 1 объект с этим префиксом. Существует более 30 объектов с одинаковым префиксом.

2. @Райан, Вы уверены, что у вас есть доступ к этим конкретным ключам S3?

3. ДА. Я получаю случайный ключ, но не все ключи.

4. @Райан, код верен. Вы должны дважды проверить структуру корзины s3 и ее префиксы.

5. что происходит, когда вы добавляете завершающий / в префикс? ‘вывод/группа1/’