Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从AWS lambda函数获取EC2实例IP并使用请求库_Python_Python 3.x_Amazon Web Services_Amazon Ec2_Aws Lambda - Fatal编程技术网

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

Python 从AWS lambda函数获取EC2实例IP并使用请求库,python,python-3.x,amazon-web-services,amazon-ec2,aws-lambda,Python,Python 3.x,Amazon Web Services,Amazon Ec2,Aws Lambda,我正在Amazon AWS lambda上编写一个lambda函数。它访问EC2实例的URL,我正在该实例上运行WebRESTAPI。lambda函数由Alexa触发,并用Python语言(python3.x)编码。 目前,我已经在lambda函数中硬编码了EC2实例的URL,并成功运行了Alexa skill。 我希望lambda函数自动从EC2实例获取IP,每当我启动实例时,它都会不断变化。这将确保我不必每次启动EC2实例时都对URL进行编码和硬编码。 我在这个问题上偶然发现了一个类似

我正在Amazon AWS lambda上编写一个lambda函数。它访问EC2实例的URL,我正在该实例上运行WebRESTAPI。lambda函数由Alexa触发,并用Python语言(python3.x)编码。

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

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

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

此外,我在我的系统上安装了请求库,并尝试上载结构为:

  • REST.zip/
    • 请求库文件夹
    • index.py
我目前正在使用urllib库

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

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

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

您可以使用
bot3
进行操作,但我建议不要使用这种架构。更好的方法是使用负载平衡器(即使只有一个实例),然后在应用程序中使用负载平衡器的CNAME记录(只要LB存在,这一点就不会改变)


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

这不是一个好的应用程序堆栈设计。我是一个初学者,只是为了练习。该怎么设计呢?这不是很好的应用程序堆栈设计。我是初学者,只是为了练习。设计应该如何?谢谢你的回复。谢谢你的回复。