Amazon web services fmt.Println输出未显示在CloudWatch日志中
我使用无服务器框架创建了一个简单的Go Lambda。我期望(根据文档)来自Amazon web services fmt.Println输出未显示在CloudWatch日志中,amazon-web-services,go,aws-lambda,amazon-cloudwatch,Amazon Web Services,Go,Aws Lambda,Amazon Cloudwatch,我使用无服务器框架创建了一个简单的Go Lambda。我期望(根据文档)来自fmt.Println或log.Println的所有输出都会显示在Cloudwatch中。但我没看到 下面是一个纯粹出于测试目的而输入的行的示例: func Handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { fmt.Println("Hello from lambda") (.
fmt.Println
或log.Println
的所有输出都会显示在Cloudwatch中。但我没看到
下面是一个纯粹出于测试目的而输入的行的示例:
func Handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
fmt.Println("Hello from lambda")
(...)
我确信权限是正确的,因为我看到了日志组,并且有Cloudwatch条目可供查看。实际上,我可以看到正在CloudFormation中创建日志组,所以我确信这不是问题所在。但是我在CloudWatch中没有看到任何Println
语句的输出。这就是我所做的见:
START RequestId: fd48461b-3ecd-11e8-9e32-594932db04f2 Version: $LATEST
END RequestId: fd48461b-3ecd-11e8-9e32-594932db04f2
REPORT RequestId: fd48461b-3ecd-11e8-9e32-594932db04f2 Duration: 13.82 ms Billed Duration: 100 ms Memory Size: 256 MB Max Memory Used: 21 MB
我尝试过各种其他的Print
方法(比如Printf
),但你不会惊讶于它没有改变任何东西
我遗漏了什么?很抱歉,我以前没有使用Lambda。也许使用glog库是有帮助的。好吧,那太尴尬了。。。当然,在运行
sls部署之前,您需要运行make
。。。如果不这样做,您将始终部署过时的代码。我会原谅自己的,因为这只是我第二天去,但这仍然很愚蠢
我通过添加deploy
和install
更新了我的Makefile
,如下所示:
build:
dep ensure
env GOOS=linux go build -ldflags="-s -w" -o bin/hello hello/main.go
env GOOS=linux go build -ldflags="-s -w" -o bin/world world/main.go
deploy:
sls deploy
install: build deploy
makeinstall
现在构建,然后部署,防止此问题再次发生