我正在尝试为IAM角色名称定义一个参数。这是我的参数
Type: String
AllowedPattern: "arn:aws:iam::*$"
ConstraintDescription: Must be an IAM policy ARN.
IAM策略名称的格式为arn:aws:iam::AccountNumber:policy/staging_test
这是我遇到的错误
Parameter EnvDynamoDbPolicy failed to satisfy constraint:
答案 0 :(得分:0)
Parameter EnvDynamoDbPolicy failed to satisfy constraint:
之后还有什么?
如果您查看java.util.regex.Pattern
,这是cloudformation用于正则表达式匹配的内容,那么我看不到它们使用美元符号。
Here's a link to the docs that point to the java patterns和Here's a link to the patterns themselves。
我不是正则表达式向导,但看起来如果您只是删除美元符号,它将起作用。所以...
我还没有测试过,这只是一个猜测
Type: String
AllowedPattern: "arn:aws:iam::*"
ConstraintDescription: Must be an IAM policy ARN.
对于其他有此问题的人来说,他们的参数名称不符合约束也可能是这种情况。 Here's a link to the constraint description。
答案 1 :(得分:0)
*
不是“通配符”,它具有特定含义(即,前面的字符/组为零或多个)。
自定义IAM策略ARN必须满足的规则的“描述”是:
因此正则表达式模式为:
^arn:aws:iam::\d{12}:policy/.+
上述步骤正是所描述的。 (取决于所使用的正则表达式引擎,您可能需要用反斜杠转义正斜杠。)
答案 2 :(得分:0)
如果输入由于任何原因失败,Cloudformation实际上会在事件输出中为您提供模式。例如,如果输入到模板的策略值不正确,则会出现类似-
的错误。validation error detected: Value '[the invalid value]' at 'role' failed to satisfy constraint: Member must satisfy regular expression pattern: arn:(aws[a-zA-Z-]*)?:iam::\d{12}:policy/?[a-zA-Z_0-9+=,.@\-_/]+
因此,您需要使用的正则表达式为arn:(aws [a-zA-Z-] *)?: iam :: \ d {12}:policy /?[a-zA-Z_0-9 + =,。@@ __ /] +