我使用无服务器框架创建了一个简单的Go Lambda。我希望(根据文档)fmt.Println
或log.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
),但是如果没有任何改变,你会感到惊讶。
我错过了什么?
答案 0 :(得分:1)
嗯,那令人尴尬......当然,你需要在make
之前运行sls deploy
...如果你不这样做,你就是&#39 ; ll总是在部署过时的代码。我会原谅自己,因为它只是我在Go的第二天,但它的愚蠢都是一样的。
我已添加Makefile
和deploy
更新了我的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