AWS - Lambda 无法访问 ElasticTranscoder
AWS - Lambda cannot access ElasticTranscoder
我在 VPC 中有一个由以下服务组成的基础设施(显然 S3 和 Transcoder 除外):
- EC2(网络服务器)
- RDS(数据库)
- 带有 Node.js
的 Lambda 函数
- S3
- 弹性转码器
场景如下:
- 用户直接上传视频到S3 bucket
- 上传会触发 lambda 函数,该函数会在 Elastic Transcoder 中创建一个新作业(使用 AWS SDK)并更新数据库 (RDS) 中的资源行
问题在于,由于 RDS 不可公开访问,因此 lambda 需要与 RDS 位于同一 VPC 中才能允许连接到它。这还会导致 lambda 函数中的一般 Internet 连接丢失,这意味着它无法访问 Elastic Transcoder(因为从 VPC 的角度来看,它是 out-of-VPC)。现在,我在 S3 上遇到了类似的问题,但通过向指向 S3 的 VPC 添加一个端点来解决这个问题相当容易,但是,Elastic Transcoder(或事实上的任何其他服务)没有这样的选项。
我不想创建 NAT 网关,因为这种无意义的东西太贵了。
所以简单的问题是:如何解决Lambda可以同时与RDS和Elastic Transcoder通信?
P.S.: lambda 角色包含可以访问 Elastic Transcoder 的 *Job
的策略
一个对我有用的选项是将我的函数分成 2 个:
第一个函数在 VPC 之外,可以访问 public 互联网,因此可以访问 Elastic Transcoder 和 S3(在您的情况下)
第二个函数 可以访问 VPC 并纯粹执行从 VPC 资源获取所需的操作。
所以重点是第一个函数将使用 aws-sdk
调用第二个函数以从 VPC 获取某些内容而无需创建 NAT 网关!
P.S。在 VPC 内部创建大量函数可能会导致意想不到的性能意外。这里有更多关于 Lambda + VPC
我在 VPC 中有一个由以下服务组成的基础设施(显然 S3 和 Transcoder 除外):
- EC2(网络服务器)
- RDS(数据库)
- 带有 Node.js 的 Lambda 函数
- S3
- 弹性转码器
场景如下:
- 用户直接上传视频到S3 bucket
- 上传会触发 lambda 函数,该函数会在 Elastic Transcoder 中创建一个新作业(使用 AWS SDK)并更新数据库 (RDS) 中的资源行
问题在于,由于 RDS 不可公开访问,因此 lambda 需要与 RDS 位于同一 VPC 中才能允许连接到它。这还会导致 lambda 函数中的一般 Internet 连接丢失,这意味着它无法访问 Elastic Transcoder(因为从 VPC 的角度来看,它是 out-of-VPC)。现在,我在 S3 上遇到了类似的问题,但通过向指向 S3 的 VPC 添加一个端点来解决这个问题相当容易,但是,Elastic Transcoder(或事实上的任何其他服务)没有这样的选项。
我不想创建 NAT 网关,因为这种无意义的东西太贵了。
所以简单的问题是:如何解决Lambda可以同时与RDS和Elastic Transcoder通信?
P.S.: lambda 角色包含可以访问 Elastic Transcoder 的 *Job
一个对我有用的选项是将我的函数分成 2 个:
第一个函数在 VPC 之外,可以访问 public 互联网,因此可以访问 Elastic Transcoder 和 S3(在您的情况下)
第二个函数 可以访问 VPC 并纯粹执行从 VPC 资源获取所需的操作。
所以重点是第一个函数将使用 aws-sdk
调用第二个函数以从 VPC 获取某些内容而无需创建 NAT 网关!
P.S。在 VPC 内部创建大量函数可能会导致意想不到的性能意外。这里有更多关于 Lambda + VPC