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

Posted

技术标签:

【中文标题】如何使用 cloudformation 或 yaml 将保留天数设置为日志流【英文标题】:How to set retention days to a logstream with cloudformation or yaml 【发布时间】:2022-01-18 23:19:41 【问题描述】:

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

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

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

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

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

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

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

有没有办法通过 Python、Cloudformation 或 YAML 将保留设置应用于 LogStream?

【问题讨论】:

【参考方案1】:

正如您已经发现的那样,您可以在LogGroups 上set log retention,但不能在LogStreams 上。

您可以使用CloudWatch S3 exports 通过LogStream 间接区分留存率。使 S3 导出适用于您的用例的原因在于 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 以在设定的天数后自动删除对象。规则可以按对象前缀过滤,这很容易对应日志流名称。 定期运行导出任务。

【讨论】:

非常感谢您帮我解决这个问题,我将立即开始研究这个解决方案:)

以上是关于如何使用 cloudformation 或 yaml 将保留天数设置为日志流的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloudformation 向 OpsWorks 堆栈注册 RDS 实例?

如何在 AWS SAM 或 Cloudformation 中添加身份提供者

AWS Cloudformation-如何在 json/yaml 模板中处理字符串大写或小写

如何下载通过CloudFormation创建的IoT证书?

如何在 cloudformation“Fn::Sub”中转义“$”

AWS::CloudFormation::Init 它是如何工作的?