使用 AWS Lambda(几乎)免费搭建你的 RSSHub 发布于 2026/04/19主页
AWS Lambda 每月提供了丰厚的免费额度(每月 100 万次请求 + 40 万 GB-秒计算时间)。与需要最低月费的 Cloudflare Container 不同,AWS Lambda 无最低承诺费用,这使得我们可以在上面(几乎)免费搭建自己的 RSSHub 实例。
在你的 AWS CloudShell 终端中执行:
bash <(curl -fsSL https://raw.githubusercontent.com/hertzyang/bash-collection/refs/heads/master/rsshub.sh)
脚本将自动构建所需的容器镜像并推送至同区域的 ECR。接下来创建一个容器镜像 Lambda 函数并启用函数 URL,然后就可以访问你的 RSSHub 实例了!
强烈建议将函数 URL 放置在 CloudFront 后面,CloudFront 提供固定价格的免费套餐,你可以使用同样是免费的 Rate Limiting 保护 Lambda,和/或 CloudFront Functions 自行对请求进行鉴权。使用 CloudFront 还可以自定义域名。将函数 URL 放在 CloudFront 后面时,可以使函数 URL 仅限 CloudFront 调用。
创建函数后,你可能还想要配置环境变量、内存、超时及并发限制。
⚠️ 一个没有鉴权未受限制的 Lambda 函数被刷量时将产生极其恐怖的费用。以 1GB 实例,1000 账户并发(默认值)为例,被刷一天的费用为 $1440。请务必配置适当的鉴权与并发限制,设置必要的 CloudWatch Alarms。
本文发布时,镜像大小约 400MB,这将产生每月 $0.04 的 ECR 存储费用,其它费用对个人使用而言均在永久免费额度内。
深度了解
Lambda 函数本身只能接受参数传入,这意味着直接暴露 HTTP Port 并提供服务的应用程序无法直接运行在 Lambda 上。好在 AWS 官方提供了一个转换层,它负责接收 Lambda 的新请求,并将其转换为 HTTP 请求发送给应用程序。
┌──────────┐ HTTPS ┌──────────────┐ ╔═══════════════════ Lambda Function ═══════════════╗
│ │ Request │ │ ║ ║
│ │ │ │ ║ ┌─────────────┐ HTTP req ┌──────────┐ ║
│ Client │ ━━━━━━━▶ │ Function URL │ ━━║▶ │ Web │ localhost │ │ ║
│ │ │ / APIGateway │ ║ │ Adapter │ ━━━━━━━━━━▶ │ RSSHub │ ║
│ │ ◀━━━━━━━ │ │ ◀━║━ │ │ :1200 │ │ ║
│ │ Response │ │ ║ │ │ ◀━━━━━━━━━━━ │ │ ║
└──────────┘ └──────────────┘ ║ └─────────────┘ HTTP resp └──────────┘ ║
║ ║
╚═══════════════════════════════════════════════════╝
这个转换层是以 Extension 运行,完全无需修改原有的应用程序,只需要引入 adapter 即可。不过 Lambda 的容器镜像部署不支持类似 zip 包部署里的“层”功能,因此需要自己重新构建镜像。
大部分无状态的应用程序都可以通过这种方式在 AWS Lambda 上运行,而不需要复杂的适配工作。不过,Lambda 和普通服务器之间仍然存在许多差异,其中最重要的一点是一个 Lambda 实例只能同时处理一个请求,而传统程序可以一次性处理多个请求。对于一个不活跃的 Lambda 函数,如果有 10 个新请求同时进入,这 10 个请求将会每个启动一个独立的实例,因此这 10 个请求将都面临冷启动的延迟,这将导致更差的性能和更高的成本。不过,对于 RSSHub 这样的用例这应该是可接受的。此外,因为不同实例都是独立的,它们之间的 memory cache 也是隔离的,这将导致请求几乎无法命中到缓存,不过同样对于个人用例来说这也是可接受的。
题外话
我想搭建自己的 RSSHub 实例已经有段时间了,但由于我甚至没有一台 VPS 所以无处可搭。今天看到 DIYGod 的推文,也想到自己可以将其跑在 Serverless 服务上。我粗略按推文里的使用情况算了下好像跑在 AWS 上会比在 Cloudflare 上便宜很多,因为 Containers 按常驻时长计费内存使用,而 Lambda 只对实际处理请求的时间收费。
本站暂不设评论区,如有疑问欢迎读者来信讨论(如无法触发 mailto 链接请前往关于查看邮件地址),来信可能会被公开,若不希望请注明。