我跟随官方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/
函数很多次,但每次我从我的测试中点击日志链接:
x1c 0d1x的数据
我看到一个空的画面:
的
IE,“没有日志流。"
所以我 * 正在 * 检查正确的位置,因此现在的问题变成了,为什么没有日志 * 尽管 * 我已经运行了我的测试 * 多次 *?
4条答案
按热度按时间2cmtqfgy1#
请参阅the official documentation中的Lambda日志记录先决条件信息。具体而言,您需要为Lambda函数分配一个角色,该角色有权在CloudWatch中创建日志。Amazon为Lambda函数提供了名为
AWSLambdaBasicExecutionRole
的角色,该角色包括将日志发送到CloudWatch的必要权限。vom3gejh2#
Lambda日志位于Cloudwatch中。您可以按照this AWS guide访问它们。您也可以使用SAM,但其工作方式略有不同。AWS也有Lambda logging in Go的页面。
您可以通过两种方式查看Cloudwatch中的日志,从控制台或从命令行。如果您使用控制台,请参考this guide by AWS。在命令行中,您可以修改此bash脚本以获取参数。
字符串
68bkxrlz3#
请注意,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/
64jmpszr4#
Lambda控制台只是需要一些时间来显示日志。直接在cloudwatch控制台上显示它会更快。或者使用https://github.com/TylerBrock/saw。这不会神奇地让日志出现,它只是一个方便的工具。
对于Lambda Functions,总是至少有"START,...REPORT”条目,除非该函数在角色策略中没有cloudwatch权限。
通常这只需要几秒钟。检查Lambda权限
因为有一个日志组,所以第一个策略似乎在那里。
你能从lambda控制台提供这个屏幕截图吗,展开第一张图片?在底部它还显示了日志。示例: