【问题标题】:Did I get aws CloudFront right? labmda, s3, cloudfront我得到 aws CloudFront 了吗? lambda,s3,云端
【发布时间】:2018-05-17 09:22:40
【问题描述】:

我正在阅读和观看有关 aws lambdas3CloudFront(CF) 的视频。我想在这里确认一下,我了解(或不了解)aws cloudfront 和更一般的 CDN 的概念。

目标:我想通过 CF 从我的应用中提供图像。我打算部署 aws lambda 函数。在我描述的场景中 - 我的 lambda 函数是简单的烧瓶应用程序,可能只有一个端点。实现图像上传的 POST 端点(从文件创建校验和,检查文件校验和是否已经在 s3 中 - 保存或不保存并返回图像)。图像调整大小,仅在通过查询字符串提供其参数时运行。所有图像都将被存储(原始、调整大小、旋转等)。 S3 是 CF 的起源。

部署:当我使用 python - 我想使用 zappa 作为部署工具。

示例问题

8:00: 用户正在从澳大利亚上传图片。图像之前不存在,因此将其保存到 S3 并返回。

9:00 同一用户要求提供图像的缩略图。图像被调整大小并返回。这里我假设图片调整大小的请求(例如https://app.org/resize/image1.jpeg?width=80&height=80)与响应(image.jpg 80x80)一起保存在cloudfront的澳大利亚边缘节点上。

10:00 用户请求具有相同查询字符串的相同缩略图 - 他从澳大利亚云端边缘缓存获取 image.jpg 80x80。

我做对了吗?

【问题讨论】:

    标签: python amazon-s3 aws-lambda amazon-cloudfront zappa


    【解决方案1】:

    不完全是。您在第一句和最后一句之间的目标段落中描述的内容与 CDN 完全无关,应由您的应用程序处理。 (即跟踪已上传的内容,以不同方式处理同一文件的后续上传,仅在第一次请求时生成缩略图大小等)

    CloudFront 的唯一职责是检查请求的资源是否存在于任何最佳边缘位置,如果存在则提供它,否则检查它是否存在于源中,如果存在则下载并复制到边缘并提供它,否则以错误响应。

    9:00 同一用户要求提供图像的缩略图。图像已调整大小 并返回。

    现在你有一个问题(如果我理解正确并且图像是从 CF 请求的,并且它的来源是像 S3 这样的静态存储),因为请求的缩略图不存在并且 S3 显然无法生成它。为此,源必须是能够处理来自 CF 的请求的应用程序服务器。不仅为它们提供服务,而且在提供给 CF 之前执行一些逻辑并可能生成丢失的缩略图。

    或者,您应该在上传图片时在图片上生成所有需要的版本,并将它们全部存储在 S3 上。

    【讨论】:

    • 好的。我部分明白了你的意思,但有些事情仍然是可疑的。
    • 是否 aws lambda(通过 aws api 网关使用我的烧瓶应用程序。)算作:''origin 必须是能够处理来自您的 CF 的请求的应用程序服务器''?。所以我可能有两个端点 - 一个用于上传,第二个将是一个“阴暗”的 GET,如果它存在,它会或返回图像,或者如果请求缩略图,则调整大小并返回。
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 2017-07-24
    • 2019-08-22
    • 1970-01-01
    • 2019-01-06
    • 2021-07-17
    • 2021-02-12
    • 2021-01-29
    相关资源
    最近更新 更多