如何使用 cloudformation 或 yaml 将保留天数设置为日志流

How to set retention days to a logstream with cloudformation or yaml

所以,我一直在为这个任务来回工作。

我有 AWS CloudWatch 日志,我必须在其中将保留策略应用于日志组的某些日志流

日志组:“我的日志组” 在里面我有不同的日志流 日志流-a 日志流-b

我想做的是为每个日志流设置不同的保留天数。

Logstream-a = 180 天 日志流-b = 90 天

我发现我可以将保留设置设置为 YAML 中的日志组,但我不能对日志流执行此操作。

CloudWatchLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: MyLoggroup
      RetentionInDays: 180

有什么方法可以使用 Python、Cloudformation 或 YAML 将保留设置应用于 LogStream?

正如您已经发现的,您可以 set log retention LogGroups,但不能 LogStreams

您可以使用 CloudWatch S3 exports to differentiate retention by LogStream indirectly. What makes S3 exports work for your use case is that export tasks 可以按 logStreamNamePrefix 筛选导出。

# CloudWatchLogs.Client
response = client.create_export_task(
    taskName='string',
    logGroupName='string',
    logStreamNamePrefix='string', # Export only log streams that match the provided prefix
    fromTime=123,
    to=123,
    destination='string',
    destinationPrefix='string'
)
  • LogGroup 保留天数设置为最短保留类别。 CW 中的所有日志届时都将过期。
  • 为属于较长保留类别的 LogSteams 创建导出任务。
  • 创建 expiry lifecycle rules in S3 以在设定的天数后自动删除对象。规则可以按对象前缀过滤,这很容易对应日志流名称。
  • 运行定期导出任务。