从Lambda在EC2上运行Get命令

时间:2018-07-16 10:21:39

标签: amazon-web-services aws-lambda

我对AWS环境是陌生的。我已经在EC2实例和Lambda中安装了apache Atlas,我试图从胶水数据目录中获取元数据并将其发布到在ec2上运行的apache atlas中(apache atlas使用其余端点)。我可以在lambda函数中获取胶合数据目录元数据。

如何使用lambda函数使用curl / httpGet调用来访问在EC2实例上的本地主机上的端口21000上运行的服务?

Update1:​​通过允许所有安全组中EC2实例的私有IP上的入站流量来解决。

Update2:现在我可以在Lambda中访问其余URL(通过其私有IP)和粘合目录。我所做的是创建了一个私有和公共子网,并将EC2实例和lambda放在同一个私有子网中。在公共子网中配置了NAT。

现在我的lambda正在工作,但是我无法在我的EC2实例上使用ssh。是否有办法使它也能工作?

2 个答案:

答案 0 :(得分:1)

“本地主机”相对于每台计算机。您的EC2服务器上的“本地主机”与AWS Lambda等上的“本地主机”不同。您需要停止尝试访问“ locahost”并改用服务器的IP地址。

要访问EC2服务器上的端口21000,需要将Lambda函数放置在EC2实例所在的同一VPC中,并且EC2服务器需要侦听端口{{1}上的外部流量},而不仅仅是本地主机流量。您将为Lambda函数分配一个安全组,然后在分配给EC2服务器的安全组中,打开端口21000,以接收来自Lambda函数的安全组的流量。最后,Lambda函数将通过服务器的私有IP对其进行访问,从而访问EC2服务器。

答案 1 :(得分:0)

我对Apache Atlas以及是否将其自己的HTTP端点公开给外部客户端不熟悉。您需要的是为此在EC2上运行的服务器。

EC2服务器无法神奇地接受来自外部连接的HTTP调用并路由到所需的本地资源(在本例中为Atlas)。在您的EC2实例中安装Apache服务器,nginx或任何其他服务器。对其进行正确配置,并编写一些代码,以接收Lambda所发布的数据并将其提交给本地Apache Atlas API。

下一页包含此方向的一些说明。如果需要更多帮助,请在网上搜索,已经有大量的教程来做到这一点。 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html