如何删除所有cloudwatch日志组并按日期流式传输?

M.B*_*eas 6 amazon-web-services amazon-cloudwatch aws-sdk

使用AWS一段时间后,我发现我的cloudwatch充满了过时的日志,有没有办法按日期删除所有日志组和流?这样我就可以清除所有往年的日志。

小智 9

虽然您可以像 @DominikHelps 所说的那样设置流的保留期,但这只会删除消息;它不会删除流本身。

您可以使用 CLI 查找日志组的流及其创建时间:

aws logs describe-log-streams --log-group-name Example --output text --query 'logStreams[*].[creationTime,logStreamName]' | sort -rn
Run Code Online (Sandbox Code Playgroud)

这将为您提供如下所示的输出:

1544374120302   stream1
1544373223032   stream2
1544365017774   stream3
Run Code Online (Sandbox Code Playgroud)

这些数字是纪元时间戳,以毫秒为单位。您可以使用这样的工具将它们转换为人类可读的时间戳。然后,一旦确定了要删除的流,您就可以再次使用 CLI:

aws logs delete-log-stream --log-group-name Example --log-stream-name stream1
Run Code Online (Sandbox Code Playgroud)

从手动执行此操作到以 cronjob 执行此操作是一个相当简单的步骤。如果您不介意编程,请将其转换为由 CloudWatch Events 计划事件调用的 Lambda。