我在 VPC 中有一个由以下服务组成的基础设施(显然 S3 和 Transcoder 除外):
- EC2(网络服务器)
- RDS(数据库)
- 带有 Node.js 的 Lambda 函数
- S3
- 弹性转码器
场景如下:
- 用户直接将视频上传到 S3 存储桶
- 上传会触发 lambda 函数,该函数将在 Elastic Transcoder(使用 AWS 开发工具包)中创建一个新作业并更新数据库中的资源行 (RDS)
问题在于,由于 RDS 不可公开访问,因此 lambda 需要与 RDS 位于同一 VPC 中才能允许连接到它。这也导致 lambda 函数中的一般 Internet 连接丢失,这意味着它无法访问 Elastic Transcoder(因为从VPC的角度来看,它是 VPC 外的)。现在,我在 S3 上遇到了类似的问题,但通过向 VPC 添加一个指向 S3 的端点来解决这个问题相当容易,但是,对于 Elastic Transcoder(或事实上的任何其他服务)没有这样的选项。
我不想创建一个 NAT 网关,因为对于这种无意义的事情来说它非常昂贵。
所以简单的问题是:如何解决 Lambda 可以同时与 RDS 和 Elastic Transcoder 通信的问题?
PS:lambda 角色包含有权访问 Elastic Transcoder 的策略*Job