我刚刚创建了一个lambda,并为其分配了默认的VPC、安全组和子网。给了它一个有AWSLambdaVPCAccessExecutionRole
的角色。已验证的出站规则显示所有端口和协议均为0.0.0.0/0。已验证lambda.amazonaws.com是否为策略中的受信任实体。
给它的代码是这样的(在本地工作):
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
res, err := http.Get("http://www.google.com/robots.txt")
if err != nil {
log.Fatal(err)
}
robots, err := ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", robots)
}
我在lambda中使用了“测试”函数,我得到的结果是:Get "http://www.google.com/robots.txt": dial tcp 172.217.1.196:80: i/o timeout
我试着浏览了关于这个主题的每个AWS文档,似乎我没有遗漏什么,但也许其他人会知道?
我最初并不想访问谷歌的robots.txt文件,但在得到相同的结果后,无论我尝试什么,我想我应该直接从文档中引用一个示例,以排除我正在做的任何事情。至少我知道我的代码正在执行,否则我们不会走到这一步。有什么想法可以尝试一下吗?
发布于 2020-08-08 06:07:44
这里我忽略的一件事是子网需要一个公共NAT网关…它不是一个互联网网关。一旦我们添加了这些,它就能够到达AWS墙之外并下载所需的文件。
https://stackoverflow.com/questions/63307634
复制相似问题