#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 сохранять файл без необходимости создания иерархических каталогов.