我跟随官方的Building Lambda functions with Go到它的blank-go/
demo,从中可以看到handleRequest
函数在其整个过程中几乎都使用了log.Print
:
func handleRequest(ctx context.Context, event events.SQSEvent) (string, error) {
// event
eventJson, _ := json.MarshalIndent(event, "", " ")
log.Printf("EVENT: %s", eventJson)
// environment variables
log.Printf("REGION: %s", os.Getenv("AWS_REGION"))
log.Println("ALL ENV VARS:")
for _, element := range os.Environ() {
log.Println(element)
}
// request context
lc, _ := lambdacontext.FromContext(ctx)
log.Printf("REQUEST ID: %s", lc.AwsRequestID)
// global variable
log.Printf("FUNCTION NAME: %s", lambdacontext.FunctionName)
// context method
deadline, _ := ctx.Deadline()
log.Printf("DEADLINE: %s", deadline)
. . .
但是,我找不到可以阅读这些日志的地方。请帮帮我
更新:
我已经运行/测试了我的blank-go/
函数很多次,但是每次我点击测试中的日志链接:
我得到一个空的视图:
IE,“没有日志流。"
所以我 * 正在 * 检查正确的位置,因此现在的问题变成了,为什么没有日志 * 尽管 * 我已经运行了我的测试 * 多次 *?
4条答案
按热度按时间jm2pwxwz1#
请参阅the official documentation中的Lambda日志记录先决条件信息。具体来说,您需要为Lambda函数分配一个角色,该函数有权在CloudWatch中创建日志。Amazon为Lambda函数提供了一个名为
AWSLambdaBasicExecutionRole
的角色,该角色包括将日志发送到CloudWatch的必要权限。u91tlkcl2#
Lambda日志在Cloudwatch中。您可以按照this AWS guide访问它们。您也可以使用SAM,但其工作方式略有不同。AWS也有Lambda logging in Go的页面。
您可以通过两种方式在Cloudwatch中查看日志,从控制台或从命令行。如果使用Console,请参阅this guide by AWS。在命令行中,您可以修改此bash脚本以获取参数。
rm5edbpk3#
请注意,AWS尚未更新所有文档。GO的推荐运行时已更改:https://aws.amazon.com/de/blogs/compute/migrating-aws-lambda-functions-from-the-go1-x-runtime-to-the-custom-runtime-on-amazon-linux-2/还有更多AWS没有告诉您的事情:https://www.go-on-aws.com/lambda-go/
lyr7nygr4#
Lambda控制台只是需要一些时间来显示日志。直接在cloudwatch控制台上显示更快。或者使用cli中很棒的https://github.com/TylerBrock/saw。这不会神奇地让日志出现,它只是一个方便的工具。
对于Lambda函数,总是至少有“START,...REPORT”条目,除非该函数在角色策略中不具有cloudwatch权限。
通常这只需要几秒钟。检查Lambda权限
因为有一个日志组,所以第一个策略似乎在那里。
你能从lambda控制台提供这个屏幕截图,展开第一张图片吗?底部还显示了日志。示例: