如何使用 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 模板中处理字符串大写或小写