Reputation:
I created a simple Go Lambda to play with, using the Serverless framework. I expected (as per the documentation) that all output from fmt.Println
or log.Println
would show up in Cloudwatch. But I don't see it.
Here's an example of a line I put in purely for testing purposes:
func Handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
fmt.Println("Hello from lambda")
(...)
I'm certain the permissions are correct, because I see the log-group, and there are Cloudwatch entries to view for this lambda. I can actually see the log-group being created in CloudFormation, so I'm sure that's not the issue. But I just don't see the output from any Println
statements in CloudWatch. This is what I do see:
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
I've tried various other Print
methods (like Printf
), but you won't be surprised that didn't change anything.
What am I missing?
Upvotes: 3
Views: 1612
Reputation:
Well, that's embarrassing... Of course, you need to run make
before running an sls deploy
... If you don't do that, you'll always be deploying stale code. I'll forgive myself, because it's only my second day at Go, but it's silly all the same.
I have updated my Makefile
by adding deploy
and install
, like so:
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
now builds, then deploys, preventing this issue from happening again.
Upvotes: 3
Reputation: 472
Sorry that I haven't used Lambda previously. Maybe using glog library is helpful.see the glog
Upvotes: 0