Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我坐对了吗?labmda,s3,云峰_Python_Amazon S3_Aws Lambda_Amazon Cloudfront_Zappa - Fatal编程技术网

Python 我坐对了吗?labmda,s3,云峰

Python 我坐对了吗?labmda,s3,云峰,python,amazon-s3,aws-lambda,amazon-cloudfront,zappa,Python,Amazon S3,Aws Lambda,Amazon Cloudfront,Zappa,我正在阅读和观看有关aws lambda、s3和CloudFront(CF)的视频。我想在此确认,我理解(或不理解)aws cloudfront和更一般的CDN的概念 aim:我想通过CF提供我应用程序中的图像。我打算部署aws lambda功能。在我描述的场景中,我的lambda函数是一个简单的flask应用程序,可能只有一个端点。POST端点实现图像上传(从文件创建checsum,检查文件校验和是否已在s3中-保存或不保存并返回图像)。图像大小调整,仅在通过查询字符串提供参数时运行。所有图像

我正在阅读和观看有关aws lambda、s3和CloudFront(CF)的视频。我想在此确认,我理解(或不理解)aws cloudfront和更一般的CDN的概念

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

部署:当我使用python时,我想将其用作部署工具

示例问题

8:00: 用户正在上载来自澳大利亚的图像。图像以前不在那个里,所以它被保存到S3并返回

9:00同一用户正在请求图像的缩略图。图像被调整大小并返回。在这里,我假设图像大小调整请求(例如)与响应(image.jpg 80x80)一起保存在cloudfront的Australian edge节点上

10:00用户请求使用相同查询字符串的相同缩略图-他从Australian cloudfront edge缓存获取image.jpg 80x80


我做对了吗?

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

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

9:00同一用户正在请求图像的缩略图。图像已调整大小 然后回来了

现在您遇到了一个问题(如果我理解正确,图像是从CF请求的,其来源是一个静态存储,如S3),因为请求的缩略图不存在,S3显然无法生成它。要使其工作,源服务器必须是一个能够处理来自CF的请求的应用程序服务器。不仅要提供这些请求,还要执行一些逻辑,并可能在提供给CF之前生成缺少的缩略图


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

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

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

9:00同一用户正在请求图像的缩略图。图像已调整大小 然后回来了

现在您遇到了一个问题(如果我理解正确,图像是从CF请求的,其来源是一个静态存储,如S3),因为请求的缩略图不存在,S3显然无法生成它。要使其工作,源服务器必须是一个能够处理来自CF的请求的应用程序服务器。不仅要提供这些请求,还要执行一些逻辑,并可能在提供给CF之前生成缺少的缩略图


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

OK。我部分理解了你的观点,但有些事情仍然不明朗。aws lambda(通过aws api网关使用我的flask应用程序)是否也可以这样计算:“origin必须是能够处理来自CF“”的请求的应用程序服务器?”?。所以我可能有两个端点-一个用于上传,第二个是“阴影”获取,如果有图像,它将返回图像,或者如果请求缩略图,则调整大小并返回。好的。我部分理解了你的观点,但有些事情仍然不明朗。aws lambda(通过aws api网关使用我的flask应用程序)是否也可以这样计算:“origin必须是能够处理来自CF“”的请求的应用程序服务器?”?。所以我可能会有两个端点——一个用于上传,第二个是一个“阴影”获取,如果有图像就会返回,或者如果需要缩略图就调整大小并返回。