AWS – Lambda无法访问ElasticTranscoder

我有一个由VPC中的以下服务组成的基础结构( 显然除了S3和代码转换器 ):

  • EC2(networking服务器)
  • RDS(数据库)
  • Lambda函数与Node.js
  • S3
  • 弹性转码器

情况如下:

  1. 用户直接将video上传到S3存储桶
  2. 上传将触发lambda函数,该函数将在Elastic Transcoder中创build一个新作业(使用AWS开发工具包),并更新数据库中的资源行(RDS)

问题是,由于RDS不可公开访问,为了允许连接,Rambda需要与RDS在同一个VPC中。 这也会导致在lambda函数中泛因特网连接丢失,这意味着它不能访问Elastic Transcoder(因为从VPC的angular度来看,它是一个VPCout-of- VPC)。 现在,我也遇到了与S3类似的问题,但通过在指向S3的VPC上添加一个端点来解决这个问题是相当容易的,但是,对于Elastic Transcoder(或其他任何服务,事实上)并没有这样的select。

我不想创build一个NAT网关,因为这样一个无聊的事情是非常昂贵的。

所以简单的问题是:我怎样才能解决Lambda可以同时与RDS和Elastic Transcoder进行通信?

PS:lambdaangular色包含可以访问Elastic Transcoder的*Job

其中一种方法是将我的函数分解为2:

  • 第一个function可以访问VPC ,并且完全可以从VPC资源中获得所需的function。

  • 第二个function在VPC之外 ,可以访问公共因特网,因此可以访问Elastic Transcoder和S3(在你的情况下)

所以关键是第二个函数将调用第一个function使用aws-sdk从VPC获取一些东西,而不创build一个NAT网关!

PS在VPC内部创build很多function可能会导致意外的性能问题。 这里是关于Lambda + VPC的更多信息

Interesting Posts