gpt4 book ai didi

amazon-web-services - 如何在 Fn::Sub 中正确执行正则表达式

转载 作者:行者123 更新时间:2023-12-03 07:36:43 25 4
gpt4 key购买 nike

在 cloudformation 模板 JSON 文件中,我尝试使用 RegEx 为多个 LogGroupName 指定指标过滤器,如下例所示。

我确实查看了 java.util.regex.Pattern 文档,AWS 称该文档是其正则表达式语法的基础,但这没有帮助。

"LogGroupName": {
"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname\\*"

"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname\\[A-Z0-9]+"

但我继续收到此错误消息:...'无法满足约束:成员必须满足正则表达式模式:[.-_/#A-Za-z0-9]+(服务:AWSLogs;状态代码: 400; 错误代码: InvalidParameterException...'

我需要的正确正则表达式语法是什么,或者是否有其他方法来指定多个日志组?谢谢。

最佳答案

Fn::Sub不执行正则表达式,您所追求的也不是正则表达式,它是通配符,但然后查看 AWS::Logs::MetricFilter文档 我认为它不支持通配符表达式。您需要指定准确的日志组引用,因此您必须创建一个单独的 MetricFilter每个日志组名称(如果确实有很多)。也许你的意思是日志组中的所有日志流?在这种情况下,没有 /* 就可以了。后缀,因为过滤器适用于组中的所有流。对于 lambda 函数,日志组的格式为 /aws/lambda/<FunctionName>所以在你的情况下"Fn::Sub": "/aws/lambda/${Vpc}-lambdaname"你就完成了。

您遇到的确切错误是 \ (反斜杠)不是日志组名称的有效部分。当你说\\*时它变成\* 。您可能是说 /* ,但正如上面所解释的,您不需要它。

Fn::子: 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

关于amazon-web-services - 如何在 Fn::Sub 中正确执行正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54029230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com