相关疑难解决方法(0)

为什么VPC的公共子网内的AWS Lambda功能无法连接到互联网?

我已经按照此处的教程创建了具有公共和私有子网的VPC。

然后,我在公共子网中设置了一个AWS lambda函数,以测试它是否可以连接到外部互联网。

这是我用python3编写的lambda函数

import requests

def lambda_handler(event, context):
    r = requests.get('http://www.google.com')
    print(r)
Run Code Online (Sandbox Code Playgroud)

http://www.google.com当我在VPC的公共子网中进行设置时,上述函数无法获取其内容。

这是错误消息:

“ errorMessage”:“ HTTPConnectionPool(host ='www.google.com',port = 80):url超过了最大重试次数:/(由NewConnectionError(':导致:建立新连接失败:[Errno 110]连接超时',))“,” errorType“:” ConnectionError“,

我不明白为什么。

公共子网的路由表如下所示:

在此处输入图片说明

对的GET请求http://www.google.com应匹配igw-XXXXXXXXX目标。为什么Internet网关(igw)无法将请求传递到http://www.google.com网站并取回网站内容?

文章说,我必须设置专用子网内的lambda函数才能有互联网接入。

如果您的Lambda函数需要访问私有VPC资源(例如,Amazon RDS数据库实例或Amazon EC2实例),则必须将该函数与VPC关联。如果您的功能还需要互联网访问(例如,到达公共AWS服务终端节点),则您的功能必须使用NAT网关或实例。

但这并不能解释为什么我不能在公共子网中设置lambda函数。

vpc amazon-web-services aws-lambda

9
推荐指数
2
解决办法
1753
查看次数

标签 统计

amazon-web-services ×1

aws-lambda ×1

vpc ×1