【问题标题】:What is the best way to provide files for download from an AWS EC2 instance? [duplicate]提供从 AWS EC2 实例下载的文件的最佳方式是什么? [复制]
【发布时间】:2020-04-01 07:55:21
【问题描述】:

所以我应该创建一个将文件(图像)上传到运行 Linux 的 AWS Ec2 实例的应用程序。我使用 Flask 创建上传逻辑和一个简单的 HTML 网页来上传文件。

在此之后,我应该从这些图像生成缩略图和网络优化图像并将它们存储在一个目录中,然后提供“网络优化”图像目录以供下载。我如何做到这一点?

我之前问过这个问题here。我也粘贴了我在该线程上使用的代码。

所以我的问题是:

  1. 使用 pscp 将文件传输到 EC2 实例是个好主意吗?

  2. 使用 paramiko 在远程实例上运行 ssh 以调用执行图像处理的 shell 脚本(使用 python 生成缩略图 Web 优化图像)是个好主意吗?

  3. 如何通过客户端/主机上的简单下载按钮获取压缩图像?

谢谢。

【问题讨论】:

    标签: python flask amazon-ec2 paramiko


    【解决方案1】:

    我不完全确定这是否是您必须仅使用 EC2 实例的限制之一。如果不是,如果您必须编写一个强大的解决方案,我会推荐如下内容。

    • 将文件上传到 AWS S3 存储桶,保存所有图像(原始)会便宜得多。让我们称之为images_original

    • 现在您可以编写一个 lambda 来监控存储桶,每次发生新的上传时,处理图像以创建不同分辨率的缩略图等,并将它们上传到各自的存储桶(images_thumbnails、images_640_480 等)。 要转换图像,我认为您不应该在远程实例中执行 SSH 来运行转换。最好使用 python 原生库,例如 lambda 本身内部的pillow

    在客户端,您可以简单地访问存储桶中的相应文件。例如,如果你想要一个缩略图,你可以访问 thumbnail_bucket_url/file_name.jpeg 等。

    此外,您可以拥有一个从 S3 获取签名 url 的服务。

    要了解如何使用 lambda 监控 S3 存储桶,您可以参考 THIS

    在创建 lambda 时要记住一件重要的事情,所有依赖的库都必须作为 zip 文件上传。

    例如。 pip install Pillow -t

    【讨论】:

    • 我们想让应用程序开源。最初我们确实使用了 S3 和 Lambda,但这意味着用户将被困在 AWS 平台上。
    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 2011-01-26
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多