AWS - Lambda无法访问ElasticTranscoder

时间:2017-04-17 21:24:12

标签: node.js amazon-web-services aws-lambda aws-vpc amazon-elastic-transcoder

我有一个基础设施,包括VPC中的以下服务(除了S3和Transcoder,显然):

  • EC2(网络服务器)
  • RDS(数据库)
  • 使用Node.js的Lambda函数
  • S3
  • 弹性转码器

方案如下:

  1. 用户直接将视频上传到S3存储桶
  2. 上传触发lambda函数,该函数将在Elastic Transcoder中创建新作业(使用AWS SDK)并更新数据库中的资源行(RDS)
  3. 问题在于,由于RDS不可公开访问,因此lambda需要与RDS位于同一个VPC中才能允许连接。这也导致lambda函数中的通用Internet连接丢失,这意味着它无法访问Elastic Transcoder(因为它从VPC的角度来看是 out of of-VPC )。现在,我遇到了与S3类似的问题,但是通过向指向S3的VPC添加端点来解决这个问题相当容易,但是,Elastic Transcoder(或任何其他服务)没有这样的选择。事实上。)

    我不想创建一个NAT网关,因为它对于这样一个无意义的东西来说非常昂贵。

    所以简单的问题是:如何解决Lambda可以同时与RDS和Elastic Transcoder通信的问题?

    P.S。:lambda角色包含可以访问Elastic Transcoder的*Job

    的策略

1 个答案:

答案 0 :(得分:2)

对我有用的一个选项是将我的功能分成2:

  • 第一个功能是在VPC之外,可以访问公共互联网,因此可以访问Elastic Transcoder和S3(在您的情况下)

  • 第二个功能可以访问VPC ,完全可以从VPC资源中获取所需内容。

所以关键是第一个函数将使用aws-sdk调用第二个函数来从VPC获取内容而不创建NAT网关!

P.S。在VPC内部创建许多功能可能会导致意外的性能意外。以下是Lambda + VPC

的更多信息