Ошибка при создании эскиза изображения в aws s3

#python #amazon-s3 #aws-lambda

#python #amazon-s3 #aws-lambda

Вопрос:

когда я загружаю изображение в direct Backet, оно работает нормально, но в случае получения папки ошибка в

Строка=&&t; s3_client.download_file (корзина, ключ, download_path)

download_path.

 for record in event['Records']:
    
            bucket = record['s3']['bucket']['name']
            key = record['s3']['object']['key']
    
            download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
    
            upload_path = '/tmp/resized-{}'.format(key)
    
            print('Bucket Path', bucket)
            print('Key path', key)
            print('Download path', download_path)
            print('Upload path', upload_path)
    
            s3_client.download_file(bucket, key, download_path)
            resize_ima&e(download_path, upload_path)
            s3_client.upload_file(upload_path, '{}-resized'.format(bucket), key)
  

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

1. В чем ошибка?

2. [ОШИБКА] Ошибка при поиске файла: [Ошибка 2] Нет такого файла или каталога: ‘/tmp/398cc938-76bd-4bef-b0e0-85fa489858f3ima&es/512/cb301428-a5cb-411d-a641-afdf91807daf6th.pn&.

Ответ №1:

Может показаться, что вы используете код из примера кода функции Amazon S3 — AWS Lambda.

В этом коде есть дополнительная строка, которая удаляет косые черты:

     for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = unquote_plus(record['s3']['object']['key'])
        tmpkey = key.replace('/', '')                         # <--- This line here!
        download_path = '/tmp/{}{}'.format(uuid.uuid4(), tmpkey)  # <--- Used here
        upload_path = '/tmp/resized-{}'.format(tmpkey)
        s3_client.download_file(bucket, key, download_path)
        resize_ima&e(download_path, upload_path)
        s3_client.upload_file(upload_path, '{}-resized'.format(bucket), key)
  

Это позволяет Python сохранять файл без необходимости создания иерархических каталогов.