#python #amazon-web-services #amazon-s3 #aws-lambda #aws-api-gateway
Вопрос:
Я сталкиваюсь со странной проблемой со следующей настройкой:
Приложение Flutter, которое загружает изображение в серверную часть fastapi, обслуживаемую функцией lambda через APIGateway, которая использует bota3 для загрузки и обслуживания изображения из s3.
Мои маршруты на python выглядят так.
@router.get("{filePath:path}") async def read_root(filePath, current_user: CognitoClaims = Depends(get_current_user)): user: User = await get_user(current_user.username) company: Company = await get_company(user); try: response = s3.generate_presigned_url('get_object', Params={ 'Bucket': settings.s3_bucket, 'Key': filePath.strip("/") }, ExpiresIn=3600) except ClientError as e: logging.error(e) return None return response @router.post("") async def add_file(current_user: CognitoClaims = Depends(get_current_user), file: UploadFile = File(...)): user: User = await get_user(current_user.username) company: Company = await get_company(user); file_name = file.filename; full_name = f"{current_user.username}/uploads/{file_name}" try: s3.upload_fileobj(file.file, settings.s3_bucket, full_name) response = s3.generate_presigned_url('get_object', Params={ 'Bucket': settings.s3_bucket, 'Key': full_name }, ExpiresIn=3600); except ClientError as e: logging.error(e) return None return { "path": full_name, 'url': response };
Все конечные точки и функции работают успешно, но изображения, загруженные в s3, похоже, повреждены.
Самое странное, что я могу идеально использовать эти конечные точки при нажатии с помощью postman, и еще более странно, что он отлично работает локально из приложения flutter. поэтому я могу только предположить, что это проблема, связанная с моей настройкой APIGateway.