fmt.Println输出未显示在CloudWatch日志中

时间:2018-04-13 04:09:23

标签: amazon-web-services go aws-lambda amazon-cloudwatch

我使用无服务器框架创建了一个简单的Go Lambda。我希望(根据文档)fmt.Printlnlog.Println的所有输出都会显示在Cloudwatch中。但我不明白。

以下是我为纯粹用于测试目的而放置的一行示例:

func Handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    fmt.Println("Hello from lambda")

    (...)

我确定权限是正确的,因为我看到了日志组,并且要查看此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),但是如果没有任何改变,你会感到惊讶。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

嗯,那令人尴尬......当然,你需要在make之前运行sls deploy ...如果你不这样做,你就是&#39 ; ll总是在部署过时的代码。我会原谅自己,因为它只是我在Go的第二天,但它的愚蠢都是一样的。

我已添加Makefiledeploy更新了我的install,如下所示:

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

make install现在构建,然后部署,防止此问题再次发生。

答案 1 :(得分:0)

很抱歉我之前没有使用过Lambda。也许使用glog库很有帮助。see the glog