我正在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”的文件:
我目前正在使用urllib库
当我使用zip文件进行代码上传时(我目前编辑代码内联),它甚至无法访问index.py文件来运行代码
答案 0 :(得分:2)
你可以使用boto3
来做,但我建议不要使用该架构。更好的方法是使用负载均衡器(即使您只有一个实例),然后在应用程序中使用负载均衡器的CNAME记录(只要LB存在,这不会改变。)
更好的方法是,如果您有权访问自己的域名,则可以创建CNAME记录并将其指向负载均衡器的地址。然后,您可以愉快地在Lambda函数中使用DNS名称,而不必担心它会发生变化。