【问题标题】:Use case of AWS lambda to nodejs project on Elastic BeanstalkAWS lambda 到 Elastic Beanstalk 上的 nodejs 项目的用例
【发布时间】:2016-10-15 20:55:31
【问题描述】:

我有一个在 lambda 上运行的缩略图功能,我想将它部署在弹性 beanstalk 上。 Lambda 为我做了很多后台工作,所以当我将我的函数部署到弹性 beantalk 时,它不会像我预期的那样正常工作。

我的 lambda 函数可以缩略图给定 s3 存储桶的给定文件夹中的所有图像,并在触发时将它们存储到同一位置的不同大小的图像中。但是,当我将它部署到 beanstalk 时,它不会被任何 s3 事件触发。

我知道修复它的粗略步骤,但我需要知道一些具体的事情:

  1. 在创建 lambda 函数之前,我们需要配置事件资源:

我想知道是否可以以某种方式将它们传递给 beanstalk,我正在考虑将 json 传递给我的 node.js 函数,但我不知道具体如何。

  1. 我不知道是否应该在无限循环中添加我的函数来监控来自 s3 的事件通知。

  2. 我想通过express将此node.js功能与其他独立的node.js服务结合起来。我想显示关于浏览器中缩略图的图像数量的摘要消息。但目前,使用 lambda 包结构,我正在将函数处理程序导出到其他 js 文件。如何将内部数据导出到另一个静态 hjs/jade 页面?

  3. 如何从 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


【解决方案1】:

关于 Elastic Beanstalk 与 AWS Lambda,我认为 Lambda 对于此类任务将更具可扩展性且更便宜。而且我认为将状态信息保存到 DynamoDB 表将是一种快速简便的方法,可以让您在 Web 应用程序中显示可用的统计信息,同时防止这些统计信息在您重新部署或重新启动应用程序时消失。将这些数据保存在 DynamoDB 中还可以让您在 Elastic Beanstalk 中为您的网站提供多个 EC2 实例,而不必担心以某种方式跨服务器同步这些数据。


关于向 Elastic Beanstalk 发送 S3 通知,您需要执行以下操作:

  1. 配置 S3 以向 SNS 主题发送通知
  2. 配置 SNS 主题以向 HTTP 端点发送通知
  3. 在您的 Beanstalk 应用程序中配置一个 HTTP 端点以接收和处理这些通知

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 2019-02-13
    • 2020-08-24
    • 2016-03-12
    • 2015-01-14
    • 2012-11-13
    • 2020-09-28
    • 2019-02-22
    • 2016-01-10
    相关资源
    最近更新 更多