我有一个 Node.js 任务,它将数据库中的值转换为 MP3 文件,然后将它们上传到 s3 存储。在我的笔记本电脑上执行该代码时效果非常好。我决定将其迁移到 Lambda,这样我就可以每隔几个小时自动运行一次。我做了一些小的修改,再次,效果很好。但这里有一个问题:它仅在我的 RDS 实例设置为允许来自任何 IP 的连接时才起作用。显然,这是 Not Acceptable 安全风险。
我将数据库和 Lambda 代码放在同一个 VPC 和安全组中,但即便如此,我的代码也无法连接到 S3。然后,我添加了 S3 的端点,看起来根据我的控制台日志一切正常。但是,S3 存储中的文件是空的(0 字节)。
我需要改变什么?我听说我可能需要配置我的 VPC 才能访问互联网,但我不确定这是否是我需要做的。老实说,这些教程让我感到困惑。
有人能指出我正确的方向吗?
最佳答案
这是一个已知问题(用户知道,但我见过的 AWS 并未真正承认)lambda vps 文档说:
http://docs.aws.amazon.com/lambda/latest/dg/vpc.html
"When a Lambda function is configured to run within a VPC, it incurs an additional ENI start-up penalty. This means address resolution may be delayed when trying to connect to network resources."
和
"If your Lambda function accesses a VPC, you must make sure that your VPC has sufficient ENI capacity to support the scale requirements of your Lambda function. "
来源:https://forums.aws.amazon.com/thread.jspa?messageID=767285
这意味着它有严重的缺点,使其无法工作:
- 速度惩罚
- 必须手动设置缩放比例
- 必须为 NAT 网关支付每小时 0.059 美元的费用 ( https://aws.amazon.com/vpc/pricing/ )
关于node.js - 将 Lambda 连接到 RDS 和 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48877103/