0

我正在阅读和观看有关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)一起保存在云端的澳大利亚边缘节点上。

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

我做对了吗?

4

1 回答 1

2

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

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

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

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

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

于 2017-12-03T23:39:01.403 回答