【发布时间】:2016-10-15 20:55:31
【问题描述】:
我有一个在 lambda 上运行的缩略图功能,我想将它部署在弹性 beanstalk 上。 Lambda 为我做了很多后台工作,所以当我将我的函数部署到弹性 beantalk 时,它不会像我预期的那样正常工作。
我的 lambda 函数可以缩略图给定 s3 存储桶的给定文件夹中的所有图像,并在触发时将它们存储到同一位置的不同大小的图像中。但是,当我将它部署到 beanstalk 时,它不会被任何 s3 事件触发。
我知道修复它的粗略步骤,但我需要知道一些具体的事情:
我想知道是否可以以某种方式将它们传递给 beanstalk,我正在考虑将 json 传递给我的 node.js 函数,但我不知道具体如何。
我不知道是否应该在无限循环中添加我的函数来监控来自 s3 的事件通知。
我想通过express将此node.js功能与其他独立的node.js服务结合起来。我想显示关于浏览器中缩略图的图像数量的摘要消息。但目前,使用 lambda 包结构,我正在将函数处理程序导出到其他 js 文件。如何将内部数据导出到另一个静态 hjs/jade 页面?
如何从 s3 获取通知?
简而言之,如果将 lambda 函数部署到 beanstalk 不值得增加如此复杂性,我应该将其保留为 lambda 函数吗?
【问题讨论】:
-
您需要将“内部数据”存储在 Lambda 或 Elastic Beanstalk 之外的某个位置。我建议使用 DymamoDB 或可能的 ElastiCache (Redis) 来存储您要汇总和显示的数据。然后,您可以让 Lambda 函数和/或任意数量的 Elastic Beanstalk 服务器更新该数据,同时使其可用于您的 Web 应用程序。
-
那么我管理一个简单的服务需要做更多的工作。我目前的想法是在 EB 上将任何其他微服务一起部署,并让 thumbnailer 作为 lambda 函数运行。
-
@MarkB 我怀疑 lambda 的可扩展性,但我不知道如何获取通知并将通知发送到 S3 到 EB 中的某些服务。我不想改变我的结构,因为我只需要在函数被触发后显示即时汇总数据。
-
您怀疑 Lambda 的可扩展性?也许您需要发布有关此的详细信息。我怀疑 Beanstalk 管理的几个 EC2 实例是否能够像 Lambda 一样处理尽可能多的并发图像处理任务。关于向 EB 发送 S3 通知,您需要将 S3 配置为向 SNS 主题发送通知,并将 SNS 主题配置为向 HTTP 端点发送通知,并在您的 EB 应用程序中配置一个 HTTP 端点以接收和处理这些通知。
-
@MarkB 您的评论清楚地解释了潜在的工作可能是什么。我认为我目前的方法是在正确的轨道上。我想知道您是否想将此作为答案发布。
标签: node.js amazon-web-services express amazon-s3 lambda