什么是Cloudformation IAM策略名称的正则表达式

时间:2019-06-19 20:10:55

标签: regex amazon-cloudformation

我正在尝试为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:

3 个答案:

答案 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 patternsHere'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)

regex中的

*不是“通配符”,它具有特定含义(即,前面的字符/组为零或多个)。

自定义IAM策略ARN必须满足的规则的“描述”是:

  1. 以“ arn:aws:iam ::”开头
  2. 后跟12位数字的帐户ID
  3. 后跟“:policy /”
  4. 后跟...至少一个字符?

因此正则表达式模式为:

^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 + =,。@@ __ /] +