通过 AWS Lambda 函数访问 EC2 实例服务

Posted

技术标签:

【中文标题】通过 AWS Lambda 函数访问 EC2 实例服务【英文标题】:Access EC2 Instance Service Via AWS Lambda Function 【发布时间】:2018-04-18 12:55:11 【问题描述】:

我有一个只有私有 IP 的 EC2 实例,并且我已经在运行 10.0.4.44:9092 的同一个实例上安装了 Apache Kafka。 现在,我创建了 AWS Lambda 函数,它从给定的存储桶中读取文档并将文档正文发送到在 EC2 实例上运行的 Apache Kafka。

现在,AWS Lambda 无法访问 EC2 实例服务。

如何授予 Lambda 访问权限以访问 EC2 上的 Apache kafka 服务?

【问题讨论】:

添加到同一个VPC 将 Lambda 添加到 VPC?该怎么做? 【参考方案1】:

您需要将 Lambda 函数添​​加到运行 EC2 服务器的 VPC。这是 Lambda VPC 支持的 announcement 博客文章,其中包含设置它的演练。这是official documentation。

VPC 中的 Lambda 函数不会获得公共 IP 地址。这意味着它将无法访问 VPC 之外的任何内容。由于您还需要访问 S3,因此您需要设置一个 S3 VPC Endpoint,以便您的函数仍然具有 S3 访问权限。

如果您的函数需要访问 VPC 之外的其他内容,那么您必须将其添加到附加了 NAT 网关的 VPC 的私有子网中。

【讨论】:

以上是关于通过 AWS Lambda 函数访问 EC2 实例服务的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 无法访问同一 VPC 中的 EC2 端口

通过AWS lambda在EC2实例上执行python脚本

如何从我的 EC2 实例调用 AWS Lambda 函数?

AWS Lambda 函数能否通过 *** 调用终端节点?

使用 Lambda 函数覆盖 AWS Auto Scaling 策略

无法将 s3 与来自 aws lambda 的 ec2 文件夹同步