我有一个用 Go 编写的 lambda,它与 AWS 中的应用程序负载均衡器后面的轻量级 http 应用程序通信:
package main
import (
"io/ioutil"
"log"
"net/http"
"os"
"time"
)
func main() {
for {
req, err := http.NewRequest("GET", "http://my-app-12345.us-east-1.elb.amazonaws.com:8080", nil)
if err != nil {
log.Fatal("Error reading request. ", err)
}
req.Header.Set("Load-Rate", os.Getenv("LOAD"))
client := &http.Client{Timeout: time.Second * 10}
resp, err := client.Do(req)
if err != nil {
log.Fatal("Error reading response. ", err)
}
if resp.StatusCode == http.StatusOK {
bodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
bodyString := string(bodyBytes)
log.Println(bodyString)
}
time.Sleep(time.Duration(10) * time.Millisecond)
}
}
我已经在 lambda 和 ALB 使用的安全组中的所有端口上开放了全球访问权限,并且我可以从我的家用机器上很好地卷曲端点。但是,当我尝试在 Lambda 中运行它时,我在 CloudWatch 日志中得到以下信息:
2020-06-04T07:06:31.028-05:00 进程在完成请求之前退出
2020-06-04T07:06:41.100-05:00 2020/06/04 12:06:41 读取响应时出错。获取 http://my-app-12345.us-east-1.elb.amazonaws.com:8080:net/http:在等待连接时取消请求(等待标头时超出 Client.Timeout)
2020-06-04T07: 06:41.101-05:00 2020/06/04 12:06:41 退出状态 1
我很难确定这是 Go 问题还是我在 AWS 中的某些配置有误。我对 Go 在这里抛出的错误一点也不熟悉。
蛊毒传说
相关分类