在 AWS Lambda 上运行免费 Twitter 机器人 Lambda 适合你吗?编写 Lambda 函数 设置 AWS Lambda 观看运行

2025-05-28

在 AWS Lambda 上运行免费 Twitter 机器人

Lambda 适合您吗?

编写 Lambda 函数

设置AWS Lambda

观看它

如果你读过《关于时间》这篇文章,你就会知道我坚信,现在花时间构建一些可以节省未来时间的东西。为此,我用 Go 语言构建了一个简单的 Twitter 机器人,它会偶尔发布我文章的链接,即使我太忙没时间使用它,也能让我的账号保持新鲜感。这些推文有助于为我的网站带来流量,而我无需费心。

我在 Amazon EC2 实例上运行了这个机器人大约一个月。我的 AWS 使用费用一直很便宜(比北美大部分地区一杯咖啡的价格还低),所以当我发现我使用的这个小实例的账单比上个月增加了 90% 时,我感到很惊讶。坦白说,我不认为 AWS 很贵,但我仍然……很抠门。我想要我的 Twitter 机器人,而且希望价格更便宜。

我一直想探索一下 AWS Lamda,觉得这是一个很好的机会。与持续运行(并收取费用)的 EC2 实例不同,Lambda 按请求收费,并且根据函数运行的时长收费。Lambda 也提供免费套餐,前 100 万个请求加上一定量的计算时间都是免费的。粗略地理解一下,假设你运行一个每天为你发帖两次的 Twitter 机器人,那么你每月使用 Lambda 的费用总计……加上一个……零。我已经运行我的 Lambda 函数几个星期了,完全免费。

最近,当我接管@freeCodeCampTO Twitter 时,我决定采用类似的策略,并利用这个机会为您记录整个过程,亲爱的读者。

因此,如果您目前正在使用一个全天候运行的实例来执行某个可以通过 cron 作业完成的任务,那么这篇文章非常适合您。我将介绍如何为 Lambda 编写函数,如何将其设置为自动运行,以及一个贴心的小惊喜——一个方便的 Bash 脚本,它可以在您需要更改时从命令行更新您的函数。让我们开始吧!

Lambda 适合您吗?

当我用 Go 编写 Twitter 机器人代码时,我打算让它在 AWS 实例上运行,并大量借鉴了Francesc 精彩的“Just for Func”一集。一段时间后,我对其进行了修改,让它每天两次从我的 RSS 订阅中随机选择一篇文章并发送推文链接。我想为 @freeCodeCampTO 机器人做类似的事情,让它每天早上发送一条关于编程的励志名言。

这是 Lambda 的一个很好的用例,因为:

  • 程序应该执行一次
  • 它按照固定的时间表运行,使用时间作为触发器
  • 它不需要持续运行

需要牢记的是,Lambda 会响应您定义的事件运行一次函数。最常用的触发器是简单的 cron 表达式,但您还可以连接许多其他触发事件。您可以在此处查看概述。

编写 Lambda 函数

我发现用 Go 来实现这个非常简单。首先,获取aws-lambda-go库:

go get github.com/aws/aws-lambda-go/lambda
Enter fullscreen mode Exit fullscreen mode

然后将其设为您的func main()

func main() {
    lambda.Start(tweetFeed)
}
Enter fullscreen mode Exit fullscreen mode

tweetFeed实现所有操作的函数名在哪里?虽然我不会在这里详细介绍整个 Twitter 机器人的编写过程,但您可以在 GitHub 上查看我的代码。

设置AWS Lambda

我假设你已经拥有一个 AWS 账户。如果没有,请先访问这里:https://aws.amazon.com/free

1. 创建函数

在服务列表中找到 AWS Lambda,然后查找这个闪亮的按钮:

创建函数

我们将从头开始编写一个函数。为函数命名,然后在“运行时”下选择“Go 1.x”。

在“角色名称”下,您可以输入任何您喜欢的名称。这是必填字段,但与本用例无关。

单击创建函数。

从零开始创作

2. 配置你的函数

您将看到一个用于配置新函数的屏幕。在Handler下输入您的 Go 程序的名称。

配置您的函数

向下滚动,您会看到一个输入环境变量的位置。这里非常适合输入 Twitter API 令牌和密钥,请使用程序所需的变量名。AWS Lambda 函数将使用您在此处提供的变量为您创建环境。

环境变量

此用例无需进一步设置。点击页面顶部的“保存” 。

3. 上传您的代码

您可以在配置屏幕上将函数代码以 zip 文件的形式上传。由于我们使用的是 Go,因此您需要go build先将生成的可执行文件压缩,然后再将其上传到 Lambda。

……当然,我不会每次调整函数的时候都手动这么做。这就是awscli这个 Bash 脚本的用途!

update.sh

go build && \
zip fcc-tweet.zip fcc-tweet && \
rm fcc-tweet && \
aws lambda update-function-code --function-name fcc-tweet --zip-file fileb://fcc-tweet.zip && \
rm fcc-tweet.zip
Enter fullscreen mode Exit fullscreen mode

现在,每当我进行调整时,我只需运行bash update.sh

如果您还没有使用AWS 命令​​行界面,那就赶紧使用吧,以后再感谢我。您可以在此处的快速配置部分pip install awscli找到几分钟内完成设置和配置的说明

4. 测试你的函数

想看看效果吗?当然想!点击顶部下拉菜单中的“配置测试事件”。

配置测试事件

由于您将为此函数使用基于时间的触发器,因此您无需在弹出窗口中输入任何代码来定义测试事件。只需在“事件名称”下输入任意名称,并在下方字段中清空 JSON 即可。然后点击“创建”

配置空测试事件

单击页面顶部的“测试” ,如果一切正常,您应该会看到...

测试成功通知

5.设置 CloudWatch Events

为了像 cron 作业一样运行我们的函数(作为定期安排的基于时间的事件),我们将使用 CloudWatch。点击Designer侧栏中的“CloudWatch 事件”

CloudWatch 事件触发器

在“配置触发器”,您将创建一个新规则。为您的规则选择一个描述性的名称(不包含空格或标点符号),并确保选中“计划表达式” 。然后,输入您希望程序运行的时间,例如“速率表达式”或“cron表达式”。

cron 表达式如下所示:cron(0 12 * * ? *)

分钟 小时 月份中的某天 星期几 用英语
0 12 * * * 每天中午 (UTC) 运行

有关如何编写 cron 表达式的更多信息,请阅读此文。

要了解当前的 UTC 时间,请单击此处。

如果您希望程序每天运行两次,比如一次在上午 10 点,一次在下午 3 点,则需要设置两个单独的 CloudWatch Events 触发器和 cron 表达式规则。

单击“添加”

设置 cron 表达式规则

观看它

这就是启动并运行 Lambda 函数所需的全部内容!现在您可以放松身心,去做比在 Twitter 上分享 RSS 链接更重要的事情了。

文章来源:https://dev.to/victoria/running-a-free-twitter-bot-on-aws-lambda--2pik
PREV
编写出色的 React 组件的秘诀
NEXT
如何作为独立程序员设置短反馈循环关于反馈循环建立纪律明确具体的顶层目标确定中层和低层目标的优先级并进行规划自动化你的工作留出时间进行代码审查留出时间进行流程审查利用审查结果更新你的目标和流程