在一个cloudformation模板JSON文件中,我试图使用RegEx为多个LogGroupNames指定一个指标过滤器,如下例所示。
我确实查看了java.util.regex.Pattern文档,AWS说它是它的regex语法的基础,但这没有帮助。
"LogGroupName": {
"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname\\*"
或
"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname\\[A-Z0-9]+"
但是我仍然收到此错误消息:...无法满足约束条件:成员必须满足正则表达式模式:[.-_ /#A-Za-z0-9] +(服务:AWSLogs;状态码:400;错误代码:InvalidParameterException ...'
我需要什么合适的正则表达式语法,或者还有另一种方法来指定多个日志组?谢谢。
答案 0 :(得分:1)
Fn::Sub
不执行正则表达式,而您所追求的也不是正则表达式,它是一个通配符,但是在查看AWS::Logs::MetricFilter
文档时,我认为它不支持通配符表达式。您需要指定确切的日志组引用,因此必须为每个日志组名称创建一个单独的MetricFilter
(如果确实有很多)。也许您的意思是日志组中的所有日志流?在这种情况下,您可以不用后缀/*
,因为该过滤器适用于组中的所有流。对于lambda函数,日志组的格式为/aws/lambda/<FunctionName>
,因此对于您的情况"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname"
,您已经完成。
您所说的确切错误是\
(反斜杠)不是日志组名称的有效部分。当您说\\*
时,它变成\*
。您可能是说/*
,但如上所述,您并不需要它。
Fn :: Sub: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html
AWS :: Logs :: MetricFilter: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html