使用 AWS CloudFormation 创建资源时,我在堆栈事件中收到了“Model Validation Failed(模型验证失败)”错误。
简短描述
类型值、允许值、最小值、最大值和模式值是使用 CloudFormation 模板创建资源属性的接受条件。如果某个属性值未正确定义,则会收到以下“Model Validation Failed(模型验证失败)”错误之一:
- Model Validation Failed (#PropertyName: Failed validation constraint for keyword [type]) [模型验证失败(#PropertyName: 关键词 [类型] 的验证约束失败)]
- Model Validation Failed (#PropertyName: Failed validation constraint for keyword [pattern]) [模型验证失败(#PropertyName: 关键词 [模式] 的验证约束失败)]
- Model validation failed (#PropertyName: expected type: Number, found: String) [模型验证失败(#PropertyName: 预期类型: 数字, 查找: 字符串)]
**注意:**前面的错误消息是示例。在您收到的错误中,指定了 PropertyName(属性名称)。
解决方法
- 在 CloudFormation 堆栈事件中,确定失败的资源类型的属性。例如,Namespace(命名空间)是资源 AWS::CloudWatch::Alarm 的一个属性。
- 确定出现错误的资源类型。例如,AWS::CloudWatch::Alarm。
- 查找资源的属性。
- 将模板中定义的属性值与在第 3 步中找到的正确属性值进行比较。
**注意:**某些属性不包含最小或最大字符数限制值。
- 如果资源的属性值不符合接受条件,请编辑模板,输入需要的值。
- 使用新模板更新 CloudFormation 堆栈。
以下是资源类型 AWS::CloudWatch:Alarm 的 Namespace(命名空间)属性的接受条件示例:
Required: No
Type: String
Minimum: 1
Maximum: 255
Pattern: [^:].*
Update requires: No interruption
**注意:**要使 Namespace(命名空间)标准被接受,类型必须为 String(字符串),字符限制必须介于 1 和 255 之间,并且模式必须为 [^:].*。