CodeBuild Logs Config - CloudWatch 支持基于时间的日志保留。
对于 CodeBuild 日志 - 我们能否实现日志保留,即“保留最新 3 个成功构建日志”+“保留最新 3 个失败构建日志”?
就我而言,我使用这种方法:
.tf
我创建了资源loggroup
并保留:resource "aws_cloudwatch_log_group" "loggroup" {
name = "/aws/codebuild/test"
retention_in_days = 30
}
logs_config {
cloudwatch_logs {
group_name = aws_cloudwatch_log_group.loggroup.name
}
}
然后我应用我的 terraform 代码。
不幸的是,没有。 CodeBuild 本身不支持此功能。
解决方法是在 CloudWatch 控制台上为与 CodeBuild 项目关联的日志组设置保留策略。
更多关于如何在 CloudFormation 中配置基于时间的保留期的信息,请参阅此处,因为已经有一个 TerraForm 示例:
AWSTemplateFormatVersion: "2010-09-09"
Resources:
# CodeBuild
# ------------------------------------------------------------
CodeBuildProject:
Type: AWS::CodeBuild::Project
# Logs
# ------------------------------------------------------------
LogsLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub "/aws/codebuild/${CodeBuildProject}"
RetentionInDays: 7
如果您想像您要求的那样保留日志组,则必须使用 Lambda 函数自行完成。
这与 @benhorgen 的答案相同,但在 TypeScript 中:
new CloudwatchLogGroup(this, `${yourAppName}-codebuild-cloudwatch-log-group`, {
name: `/codebuild/${yourAppName}`,
retentionInDays: 7,
logGroupClass: 'STANDARD'
})
const codebuildConfig = {
...
logsConfig: {
cloudwatchLogs: {
groupName: `/codebuild/${yourAppName}`
}
},
}
new CodebuildProject(scope, `${yourAppName}-codebuild-project`, codebuildConfig);