在 AWS Cloudformation 中,是否可以为 AWS::Logs::LogGroup 设置 LogGroupName 的通配符?

问题描述

我有很多 Lambda,我想在 AWS Cloudformation 中使用 AWS::Logs::LogGroup 为所有这些设置日志保留策略,但我看到的唯一示例为每个设置了 LogGroupName。是否可以使用通配符或无需指定每个 Lambda 函数为所有 Lambdas 日志设置保留策略?

我试过了:

LambdaLogGroup:    
  Type: AWS::Logs::LogGroup    
  Properties:    
    LogGroupName: '/aws/lambda/*'    
    RetentionInDays: 14

然而,这不出所料地无法部署(堆栈失败)并出现以下错误"Model validation failed (#/LogGroupName: failed validation constraint for keyword [pattern])"

我也试过:

LambdaLogGroup:
  Type: AWS::Logs::LogGroup
  Properties:
    LogGroupName: /aws/lambda/
    RetentionInDays: 14

然而,这只为顶层设置策略,而不是为任何单个 Lambda 设置。

解决方法

遗憾的是,它在普通 CFN 中不可能。您必须使用 CloudFormation 中的 custom resource 来完成。