从AWS lambda函数获取EC2实例IP并使用请求库

时间:2017-08-24 06:49:36

标签: python python-3.x amazon-web-services amazon-ec2 aws-lambda

我正在Amazon AWS Lambda上编写lambda函数。它访问EC2实例的URL,我正在运行Web REST API。 lambda函数由Alexa触发,并以Python语言(python3.x)编码。

目前,我已经在lambda函数中硬编码了EC2实例的URL,并成功运行了Alexa技能。

我希望lambda函数自动从EC2实例获取IP,每当我启动实例时它都会不断变化。这将确保每次启动EC2实例时我都不必去代码并对URL进行硬编码。

我在SO上偶然发现了一个类似的问题,但没有答案。但是,有一个回复表明更新了IAM角色。我之前已经为其他目的创建了IAM角色,但我仍然不习惯它。 这可能吗?它是否需要管理EC2实例的安全组? 我是否需要设置一些权限/配置/设置? lambda代码如何实现这一目标?

另外,我在我的系统上安装了请求库,我尝试上传一个结构为“.zip”的文件:

        
  •         REST.zip/     
  •         
              
    •             请求库文件夹         
    •         
    •             index.py         
    •     

我目前正在使用urllib库

当我使用zip文件进行代码上传时(我目前编辑代码内联),它甚至无法访问index.py文件来运行代码

1 个答案:

答案 0 :(得分:2)

可以使用boto3来做,但我建议不要使用该架构。更好的方法是使用负载均衡器(即使您只有一个实例),然后在应用程序中使用负载均衡器的CNAME记录(只要LB存在,这不会改变。)

更好的方法是,如果您有权访问自己的域名,则可以创建CNAME记录并将其指向负载均衡器的地址。然后,您可以愉快地在Lambda函数中使用DNS名称,而不必担心它会发生变化。