首页 文章

AWS Lambda作为社交媒体发布时间表?单个功能,每个预定事件触发器具有唯一数据

提问于
浏览
0

我想将AWS Lambda用作社交媒体帖子调度程序,但我找不到一种优雅的方法 . 在我们的应用中,用户可以创建社交媒体帖子并设置时间 . 然后我们在指定的时间通过社交网络的API发布它们 .

我需要能够安排一个Lambda在预定的时间运行一次,并使用唯一的数据(作为用户的标记和帖子的主体)来完成它 . 这是一个例子:

约翰希望下周四下午2点发布到Twitter . 他预定了一个帖子,身体是“Hello world!”那段时间通过我们的网络应用程序 . 该应用程序将通过API与AWS Lambda通信,并设置Lambda函数,以便在下周四下午2点触发一次 . 该函数将使用John的令牌和正文(“Hello world!”)向Twitter API发出请求 .

很想能够用Lambda做这个无服务器,但我找不到一个好方法 . 如果您可以将Cloudwatch预定事件触发器与唯一有效负载配对,那可能会有效,但我可能无法实现 . 否则,似乎这需要为每个帖子创建一个新的Lambda函数,其中数据是硬编码的,或者让Lambda命中数据库以查找计划的帖子 . 创建潜在的数百个定制的Lambda函数似乎是一个巨大的混乱,并且在Lambda运行时命中数据库似乎是对数据库的过度压力,因为我们拥有在我们安排时手头需要的所有数据 .

有关如何使用Lambda实现此目的的任何建议?是否有另一个更适合该任务的AWS服务?我应该放弃无服务器,只需设置另一个EC2实例来处理调度程序吗?

2 回答

  • 1

    您绝对不希望每个计划任务创建一个函数事件 .

    执行此操作的可扩展方式是安排单个功能定期运行(例如每小时)并检查数据库以查看是否有任何帖子安排在最后一小时(即自上次运行以来),如果是,则执行它们 .

    我建议使用数据库的原因是因为您需要在某处管理您的状态(即有效负载/详细信息),并且依赖CloudWatch Events这是不正确的方式,因为您列出的所有原因都在题 .

    数据库的替代方案是将有效负载放在S3中,并使调度功能检查需要处理的有效负载的特定位置/桶 . Lambda到S3的通信速度非常快,您无需担心负载或网络传输 .

  • 3

    您可以使用AWS Step Functions执行此任务 . 通过这些,您可以建模状态机,等待触发的确切时间戳 .

    https://aws.amazon.com/step-functions/

    这些的唯一缺点是,文档仍然很少,但如果您登录AWS控制台,他们会提供一些示例如何实现这些等待进程 .

相关问题