【发布时间】:2018-01-04 00:29:00
【问题描述】:
默认情况下,当我创建 Lambda 函数时,CloudWatch 日志组设置为永不过期。是否可以设置过期时间(比如 14 天),这样我就不必在创建后从控制台手动设置它?
更新#1
感谢@jens walter answer这是如何解决问题的代码sn-p
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]]
【问题讨论】:
-
不确定 AWS 在发布 sn-p 后是否更改了某些内容,但这对我不起作用。我收到
The following resource(s) failed to create: [CloudwatchLogsGroup]. /aws/lambda/cloud-watch-monitoring-log-filter already exists。 -
唯一的区别可能是原始CFN模板不包含这个日志组(因此日志组是由lambda隐式创建的)。现在我正在尝试更新 CFN 堆栈并尝试为日志组添加保留。遗憾的是,这种方法不起作用
-
尝试使用控制台删除lambda创建的日志组,然后使用模板创建堆栈,它应该可以工作。
-
此 sn-p 不起作用的可能原因是 Lambda 函数在创建 LogGroup 之前正在运行。当 Lambda 函数运行时,它会自动创建一个与 LogGroup 同名的日志组。在我的情况下,Lambda 函数被用作自定义资源,我设法通过在 CustomResource 中使用 DependsOn 来修复它,这样在创建 LogGroup 之前不会创建 CustomResource(这会导致 Lambda 运行)。跨度>
-
“Updated#1”中的解决方案有效。这应该被标记为问题的正确答案。
标签: aws-lambda amazon-cloudwatchlogs