繁体   English   中英

使用Lambda函数在Amazon S3 Bucket上创建缩略图

[英]Create Thumbnails on Amazon S3 Bucket with Lambda function

S3上有两个桶。 campaignfotos和campaignfotosresized。

在此输入图像描述

这两个的权限如下:

在此输入图像描述

创建了ThumbnailCreatorRole(我想我在这里遗漏了一些东西): 在此输入图像描述

我创建了一个Lambda函数,使用Code从这里将文件名形式“CreateThumbnail.js”更改为“index.js”。

在此输入图像描述

在创建时设置触发器 - 因此,当我的应用程序的用户将图像上传到存储桶时,应创建缩略图:

在此输入图像描述

当我测试该功能时,它第一次工作(使用亚马逊lambda网站上的测试按钮)但当用户从我的应用程序上传图像时它不起作用,当我在s3上传图像时它也无效在亚马逊网站上的桶。

当我尝试使用“测试”按钮第二次测试该功能时,我收到此错误(是的,我从缩略图桶中删除了旧的resized-HappyFace.jpg):

在此输入图像描述

我忘记了什么?

从日志中可以看出,lambda函数需要花费太多时间来处理请求。 尝试增加超时然后测试。 您可以从配置选项卡 - >高级设置 - >超时设置超时。

在此输入图像描述

该问题的解决方案是政策。 上述测试的时间错误可以通过将超时限制增加到25秒来解决。

如何设置策略:

转到IAM => Roles =>在附加策略中创建新角色=>角色类型=> AWS Lambda =>选择“AmazonS3FullAccess”

现在转到Lambda =>在Configuration选项卡中选择您的Lambda函数=> =>角色:选择现有角色=>选择刚刚创建的角色

完成,现在它的工作原理。 :)

为现有图像创建缩略图:

您可能在存储桶中有现有图像,您想为它们创建缩略图吗? 解决方案:创建一个新存储桶 - 转到旧存储桶并选择所有图像=>剪切。 转到新临时创建的存储桶并粘贴。 现在,在临时存储桶中再次选择所有新粘贴的图像=>剪切 - 返回旧存储桶并粘贴图像=>这会触发您的lambda函数,并为每个图像创建一个新的缩略图。 现在您可以删除临时创建的存储桶。 你完成了 :)

如果遇到困难,请转到“ 监控”选项卡 (如图所示),然后单击日志文件的链接。 他们希望能为您提供更多信息。

实际上,我建议您首先实施教程:从AWS文档中将AWS Lambda与Amazon S3配合使用

一旦确认它正在工作,请根据您的特定需求进行修改(例如存储桶,权限)。

或者,您可以跳过Lambda并使用自动图片大小调整服务,例如:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM