为 Lambda 函数设置 CloudWatch 日志组的过期时间

Set expiration of CloudWatch Log Group for Lambda Function

默认情况下,当我创建 Lambda 函数时,CloudWatch 日志组设置为永不过期。是否可以设置到期时间(比如 14 天),这样我就不必在创建后从控制台手动设置它?


更新#1

感谢 这是解决问题的代码片段

Resources:
  LambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs6.10
      CodeUri: <your code uri>
      Policies: <your policies> 


  LambdaFunctionLogGroup:
    Type: "AWS::Logs::LogGroup"
    DependsOn: "LambdaFunction"
    Properties: 
      RetentionInDays: 14
      LogGroupName: !Join ["", ["/aws/lambda/", !Ref LambdaFunction]]

如果您通过控制台创建 Lambda,则无法相应地设置日志保留时间。也无法为所有 CloudWatch Logs 设置默认保留期。

您可以影响日志保留的唯一方法是通过 CloudFormation。在这种情况下,您需要通过 CloudFormation 部署 Lambda,然后您可以在该模板中定义一个具有自定义保留的匹配 LogGroup。

您实际上可以在控制台中创建 Lambda 后更改日志保留时间,但您需要从 CloudWatch 控制台执行此操作。

如果您转到 CloudWatch 控制台并查看日志(CloudWatch > 日志组),您会注意到 Expire Events After 列中的数据是链接。通过单击其中之一,您可以更改到期时间。

您可以在 CloudFormation 中使用 Depends On。做这样的事情:

Resources:
LambdaFunction:
    Type: AWS::Serverless::Function
    DependsOn: LambdaLogGroup
    Properties:
      FunctionName: 'LambdaName'
      Handler: <handlerPath>
      Runtime: java8
      MemorySize: 512
LambdaLogGroup:
       Type: AWS::Logs::LogGroup
       Properties:
             LogGroupName: '/aws/lambda/LambdaLogGroup'
             RetentionInDays: 30

自 2021 年起,可以选择通过控制台修改留存率。

cloud watch -> 日志组 -> [您的日志组] -> 操作 -> 编辑保留设置