2017-02-27 68 views
3

我对S3两个水桶建立在Amazon S3存储缩略图。 campaignfotos和campaignfotosresized。和λ功能

enter image description here

的权限为这两个看起来像这样:

enter image description here

创造了ThumbnailCreatorRole(我想我在这里失踪的东西): enter image description here

我创建lambda函数的使用的代码从here更改文件名的形式“CreateThumbnail.js”到“index.js”。

enter image description here

设置触发,上创建 - 这样的缩略图应建立在我的应用程序的用户上传的图像,以桶:

enter image description here

当我测试的功能,它的工作原理是第一次(与亚马逊的拉姆达网站上的测试按钮),但是当用户会上传我的应用程序的图像它不工作,也不当我上传的图像上亚马逊网站的S3存储它的工作原理。

当我尝试测试功能,第二次与“测试”按钮,我得到这个错误(是的,我从缩略图桶删除旧的调整,HappyFace.jpg):

enter image description here

我忘了什么?

回答

0

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

如何设置政策:

转到IAM =>角色=>创建新的角色=>角色类型=> AWS波长=>在附加政策选择 “AmazonS3FullAccess”

现在转到Lambda =>在配置选项卡中选择您的Lambda功能=>角色:选择一个现有的角色=>选择刚刚创建的角色

完成后,现在它可以工作。 :)

对于已经存在的图片创建缩略图:

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

0

如果您遇到困难,请访问监视选项卡(在图中所示),并点击链接日志文件。他们希望能给你更多的信息。

其实,我建议你通过实现从AWS文档Tutorial: Using AWS Lambda with Amazon S3开始。

一旦确认其是否工作,修改为您的特定需求(如桶,权限)。

或者,你可以直接跳过Lambda和使用自动图像大小调整服务如

2

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

enter image description here

+0

thx,对于测试它有助于增加timout(我把它设置为25s)。但我怎样才能触发整个桶的lamda?我上传了一张新图片,但它没有创建缩略图,即使我已经将触发器设置为“ObjectCreated” - 我如何为整个桶运行该功能? – Suisse

+1

也可能有其他原因。就像你设置了错误的事件触发器类型,或者你没有给你的lambda角色提供s3Access。尝试在cloudwatch中查看日志 –