node.js - 将 Lambda 连接到 RDS 和 S3

标签 node.js amazon-web-services vpc

我有一个 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

这意味着它有严重的缺点,使其无法工作:

  1. 速度惩罚
  2. 必须手动设置缩放比例
  3. 必须为 NAT 网关支付每小时 0.059 美元的费用 ( https://aws.amazon.com/vpc/pricing/ )

关于node.js - 将 Lambda 连接到 RDS 和 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48877103/

相关文章:

javascript - 如何自动更新 package.json 中的条目?

mysql - 调整具有WriteIOPS不稳定性的MySQL RDS

amazon-web-services - 从 S3 存储桶 (AWS) 上的 cdk.out 文件夹部署 CDK Stack

amazon-web-services - Amazon VPC 中的 Puppet Behavior 不一致

amazon-web-services - AWS - 将 RDS 迁移到 VPC

amazon-web-services - 需要建议创建三个 VPC 的最佳方法

node.js - 无法启动 Sails.JS 服务器

javascript - 将数据从回调(aws dynamodb 扫描)传递到外部

javascript - 使用 Browserify API,在本地文件上使用 require 和排除

amazon-web-services - AWS ssl 不适用于自定义域的导入证书