33

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


更新#1

感谢@jens walter 的回答,这是如何解决问题的代码片段

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]]
4

4 回答 4

14

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

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

于 2017-07-28T09:22:23.623 回答
14

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

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

于 2018-02-14T21:40:22.610 回答
0

自 2021 年起,可以选择通过控制台编辑保留。

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

于 2021-09-30T19:55:22.227 回答
-3

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

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
于 2018-02-28T22:52:36.153 回答