CodeBuild 日志保留配置

问题描述 投票:0回答:4

CodeBuild Logs Config - CloudWatch 支持基于时间的日志保留。

对于 CodeBuild 日志 - 我们能否实现日志保留,即“保留最新 3 个成功构建日志”+“保留最新 3 个失败构建日志”?

amazon-web-services amazon-cloudwatch aws-codebuild
4个回答
2
投票

就我而言,我使用这种方法:

  • 在同一个文件中
    .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 代码。


1
投票

不幸的是,没有。 CodeBuild 本身不支持此功能。

解决方法是在 CloudWatch 控制台上为与 CodeBuild 项目关联的日志组设置保留策略。


1
投票

更多关于如何在 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

参考:https://medium.com/allermedia-techblog/cloudformation-example-log-retention-for-lambda-and-codebuild-a11e74516bb6

如果您想像您要求的那样保留日志组,则必须使用 Lambda 函数自行完成。


0
投票

这与 @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);
© www.soinside.com 2019 - 2024. All rights reserved.