S3上有两个存储桶。 campaignfotos和campaignfotosresized。
这两个人的权限如下:
创建了ThumbnailCreatorRole(我想我在这里遗漏了一些东西):
我创建了一个Lambda函数,使用here中的代码将文件名“CreateThumbnail.js”更改为“index.js”。
在创建时设置触发器 - 因此当我的应用程序的用户将图像上传到存储桶时,应创建缩略图:
当我测试该功能时,它第一次工作(使用亚马逊lambda网站上的测试按钮)但当用户从我的应用程序上传图像时它不起作用,当我上传图像时它也无效在亚马逊网站的s3桶上。
当我尝试使用“测试”按钮第二次测试该功能时,我收到此错误(是的,我从缩略图桶中删除了旧的resized-HappyFace.jpg):
我忘记了什么?
答案 0 :(得分:2)
答案 1 :(得分:2)
此问题的解决方案是政策。上述测试的时间错误可以通过将超时限制增加到25秒来解决。
如何设置政策:
转到IAM =>角色=>创建一个新角色=>角色类型=> AWS Lambda =>在附加策略中选择" AmazonS3FullAccess"
现在转到Lambda =>选择你的Lambda函数=>在配置标签中=>角色:选择现有的Role =>选择刚刚创建的角色
结束,现在它起作用了。 :)
为现有图片创建缩略图:
您的存储桶中是否有现有图像,您想为它们创建缩略图?解决方案:创建一个新存储桶 - 转到旧存储桶并选择所有图像=>切。转到新临时创建的存储桶并粘贴。现在,在临时存储桶中再次选择所有新粘贴的图像=>切 - 回到旧桶并粘贴图像=>这将触发您的lambda函数,并为每个图像创建一个新的缩略图。现在您可以删除临时创建的存储桶。你完成了:)
答案 2 :(得分:0)
如果您遇到困难,请转到监控标签(如图所示),然后点击指向日志文件的链接。他们希望能为您提供更多信息。
实际上,我建议您首先从AWS文档中实施Tutorial: Using AWS Lambda with Amazon S3。
一旦确认它正常工作,请根据您的特定需求进行修改(例如存储桶,权限)。
或者,您可以跳过Lambda并使用自动调整图片大小的服务,例如: