解决 Lambda 搭配 CloudFront 支持图片裁剪中无法固定图片同比例缩放
下图显示了可以使用该解决方案实施指南和随附的 AWS CloudFormation 模板在几分钟内完成部署的无服务器架构。
Serverless Image Handler 解决方案实施架构
AWS CloudFormation 模板会部署以下资源:
- Amazon CloudFront 分发提供了一个缓存层,以降低图像处理的成本和后续图像交付的延迟。CloudFront 域名可提供对图像处理程序 API 的缓存访问。
- Amazon API Gateway 提供终端节点资源并启动 AWS Lambda 函数。
- Lambda 函数从客户现有的 Amazon S3 存储桶中检索图像,并使用 Sharp 将修改版的图像返回到 API Gateway 中。
- Amazon S3 存储桶用于日志存储,与客户创建的用于存储图像的 S3 存储桶分开。如果选择,该解决方案会部署一个 S3 存储桶用于存储可选演示 UI。
- 如果您激活了图像 URL 签名功能,Lambda 函数将从您现有的 AWS Secrets Manager 密钥中检索密钥值以验证签名。
- 如果您使用智能裁剪或内容审核功能,AWS Lambda 函数将调用 Amazon Rekognition 来分析图像并返回结果。
在启动解决方案的 AWS CloudFormation 模板之前,必须在SourceBuckets模板参数中指定一个 Amazon Simple Storage Service (Amazon S3) 存储桶。使用此 S3 存储桶存储您要操作的图像。如果您有多个图像源 S3 存储桶,您可以将它们指定为逗号分隔值。为了降低延迟,请在您启动 AWS CloudFormation 模板的同一 AWS 区域中使用 S3 存储桶。
启动堆栈
登录 AWS 管理控制台并选择按钮以启动 serverless-image-handler
AWS CloudFormation 模板
下载模板 作为您自己实施的起点,默认情况下,该模板在美国东部(弗吉尼亚北部)区域启动。要在不同的 AWS 区域中启动无服务器图像处理程序,请使用控制台导航栏中的区域选择器,然后选择下一步。
在“指定堆栈详细信息”页面上,为您的解决方案堆栈指定一个名称。
在“参数”下,查看模板的参数并根据需要进行修改。此解决方案使用以下默认值,指定桶源。
选择下一步。
在配置堆栈选项页面上,选择 下一步。
在“查看”页面上,查看并确认设置。选中确认模板创建 AWS Identity and Access Management (IAM) 资源的框。
选择创建堆栈以部署堆栈。
可以在 AWS CloudFormation 控制台的状态列中查看堆栈的状态。应该会在大约 15 分钟内收到 CREATE_COMPLETE状态。
此解决方案会生成一个 CloudFront 域名,让您可以通过图像处理程序 API 访问原始图像和修改后的图像。域名在CloudFormation模板的输出部分中作为 ApiEndpoint 找到
编码图像请求的示例:
https://<distributionName>.cloudfront.net/fit-in/0x500/桶子文件
此方案可以在客户端URL中固定以下地址300x0,0x500 。。。
https://<distributionName>.cloudfront.net/fit-in/0x500/