gpt4 book ai didi

amazon-web-services - AllowedPattern 参数行为显然无法匹配简单的正则表达式

转载 作者:行者123 更新时间:2023-12-03 07:21:47 26 4
gpt4 key购买 nike

在 Cloudformation 中,我使用简单的 AllowedPattern 验证参数输入:

"ServicePassword": {
"Description": "Password for the AD service account",
"Type": "String",
"AllowedPattern": "^."
},

variables.json 文件包含一行(密码已编辑):

{"ParameterKey": "ServicePassword",  "ParameterValue": "E_redacted"},

(第一个字母大写 E;字符串的其余部分已编辑。)

当调用 Cloudformation 时:

$ aws cloudformation create-stack --stack-name bastion_redacted --template-body file://Bastion.json --parameters file://variables.json --capabilities CAPABILITY_IAM --disable-rollback
An error occurred (ValidationError) when calling the CreateStack operation: Parameter 'ServicePassword' must match pattern ^.

我使用一个更简单的正则表达式看到了同样的问题,它只是一个字符串 - "AllowedPattern": "hello"

如果我只是从模板中删除 AllowedPattern 行,它就可以正常工作。

这是一个错误吗?我做错了什么吗?

最佳答案

云形成regexes使用java.util.regex.Pattern了解它们的语法和行为,因此您可以查看 Java 的文档以获取引用。 AllowedPattern参数属性要求模式匹配整个输入字符串(而不仅仅是部分),否则它将拒绝输入。

模式 ^ 匹配行的开头,而 . 匹配任何单个字符,因此您现有的正则表达式将匹配诸如 x0。要匹配多个字符,您需要添加一个“贪婪量词”,例如 * 将匹配任意数量的字符,或 + 将匹配一个或多个字符。 (由于 AllowedPattern 无论如何都会匹配整个字符串,因此不需要 ^,因此可以将其删除。)

这样的东西应该作为一个简单的正则表达式来匹配任何类型的任意数量的字符:

"ServicePassword": {
"Description": "Password for the AD service account",
"Type": "String",
"AllowedPattern": ".*"
},

或者您可以使用 ".+" 作为同样简单的正则表达式,匹配一个或多个任何类型的字符。

关于amazon-web-services - AllowedPattern 参数行为显然无法匹配简单的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41504721/

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