amazon-web-services - 如何在 Fn::Sub 中正确执行正则表达式
问题描述
在 cloudformation 模板 JSON 文件中,我尝试使用 RegEx 为多个 LogGroupNames 指定一个 metricfilter,如下面的示例。
我确实查看了 java.util.regex.Pattern 文档,AWS 说它是其正则表达式语法的基础,但这并没有帮助。
"LogGroupName": {
"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname\\*"
或者
"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname\\[A-Z0-9]+"
但我继续收到此错误消息: ...'failed to meet constraint: Member must meet regular expression pattern: [.-_/#A-Za-z0-9]+ (Service: AWSLogs; Status Code: 400;错误代码:InvalidParameterException...'
我需要什么正确的正则表达式语法,或者是否有另一种方法来指定多个日志组?谢谢。
解决方案
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
推荐阅读
- polymorphism - Elm 中的多态记录类型
- apache-spark - 为什么我在使用这个 sql 脚本调用 df.count() 和 df.rdd.count() 时得到两个不同的值
- javascript - JQUERY/js 如何从 api 响应中制作下拉菜单
- julia - 从 Julia 1.0.0 中删除的函数
- json - 如何在 SQL Server 2012 中解析 json 字符串
- excel-formula - 基于另一列中是或否值的日期
- lua - Redis如何运行lua脚本?
- opengl - OpenGL 延迟像素化光照
- r - 使用反应式表达式
- git - 查看 stash 中列出的文件而不应用它(不是 diff)。