Amazon web services 尝试使用golang在cloudwatch上放置LogEvents时获取SerializationException
我正在尝试使用我的程序实现以下目标: 在aws cloudwatch上创建日志组 在上述日志组下创建日志流 将日志事件放在上面的日志流下 所有这些都是使用go-langAmazon web services 尝试使用golang在cloudwatch上放置LogEvents时获取SerializationException,amazon-web-services,go,exception,amazon-cloudwatch,Amazon Web Services,Go,Exception,Amazon Cloudwatch,我正在尝试使用我的程序实现以下目标: 在aws cloudwatch上创建日志组 在上述日志组下创建日志流 将日志事件放在上面的日志流下 所有这些都是使用go-lang package main import ( "time" "fmt" "github.com/jcxplorer/cwlogger" "github.com/aws/aws-sdk-go/service/cloudwatchlogs" "github.com/aws/aws-sdk-go
package main
import (
"time"
"fmt"
"github.com/jcxplorer/cwlogger"
"github.com/aws/aws-sdk-go/service/cloudwatchlogs"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws"
)
func main() {
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))
svc := cloudwatchlogs.New(sess)
logGroupName := "my-log-group";
logStreamName := "my-log-stream";
logGroupInput := cloudwatchlogs.CreateLogGroupInput{LogGroupName: &logGroupName}
svc.CreateLogGroup(&logGroupInput);
logStreamInput := cloudwatchlogs.CreateLogStreamInput{LogGroupName: &logGroupName, LogStreamName: &logStreamName}
svc.CreateLogStream(&logStreamInput)
logevents := make([]*cloudwatchlogs.InputLogEvent, 1)
logevents = append(logevents, &cloudwatchlogs.InputLogEvent{
Message: aws.String("Simple log message"),
Timestamp: aws.Int64(111),
})
p := cloudwatchlogs.PutLogEventsInput{LogEvents: logevents, LogGroupName: &logGroupName, LogStreamName: &logStreamName}
resp, err := svc.PutLogEvents(&p)
if err != nil {
panic(err)
}
fmt.Print("Next Token: {}", resp.NextSequenceToken)
}
现在,当我运行上述代码时,它成功地创建了日志组和日志流,我可以在aws cloudwatch中验证这一点。但由于某些原因,PutLogEvents失败并出现以下错误:
panic: SerializationException:
status code: 400, request id: 0685efcc-47e3-11e9-b528-81f33ec2f468
我不确定这里可能出了什么问题。任何建议或指导都会非常有用
提前感谢。序列化异常的原因是:
logevents:=make([]*cloudwatchlogs.InputLogEvent,1)
然后是append,它在slice中创建了第一个空条目。我将代码替换为
logevents:=make([]*cloudwatchlogs.InputLogEvent,0)
并且它得到了解决
此外,在调试日志时,我发现使用的时间戳值无效。根据aws文件,每个事件的时间戳不得超过14天,并且将来不得超过2小时。
以下是链接:
希望对将来遇到类似问题的人有所帮助