运行时出错:属性验证失败:[属性值 {/Targets/0/Values} 与类型 {Array} 不匹配]

DC.*_*lls 5 yaml amazon-web-services aws-cloudformation

此 CF 是在YAML而非 JSON 中创建的。

我正在通过 Cloudformation 构建 Systems Manager 维护窗口、目标和任务。

创建堆栈时,Resources:MaintenanceWindow: 部分成功完成。失败的是下一部分(下面)。不确定最后一部分,因为我们永远不会到达那里。

这是完整模板的位置:https : //pastebin.com/DNEkLPGS

我试过使用验证器和所有东西(YAML 和 CloudFormation 验证器),一切都恢复正常。

这是给出错误的部分:

Parameters:
  MaintenanceTargetName:
    Description: Maintenace Target Name (No Spaces)
    Type: String
  MaintenanceTargetDescription:
    Description: Sample - UAT Servers
    Type: String
    MaxLength: '128'
  MaintenanceTargetTarget:
    Description: Tag Key should equal 'AgentUpdate'
    Type: String
    Default: tag:AgentUpdate
  MaintenaneTargetKeyValue:
    Description: True or False
    Type: String
    Default: True
    AllowedValues:
      - True
      - False

Resources:
  MaintenanceWindowTarget:
    Type: 'AWS::SSM::MaintenanceWindowTarget'
    Properties:
      WindowId: !Ref MaintenanceWindow
      ResourceType: INSTANCE
      Targets:
        - Key: !Ref MaintenanceTargetTarget
          Values: !Ref MaintenaneTargetKeyValue
      Name: !Ref MaintenanceTargetName
      Description: !Ref MaintenanceTargetDescription
Run Code Online (Sandbox Code Playgroud)

运行模板会出现以下错误:

维护窗口目标 | CREATE_FAILED | 属性验证失败:[属性值 {/Targets/0/Values} 与类型 {Array} 不匹配]

DC.*_*lls 7

找到问题了,是格式问题:

Resources:
  MaintenanceWindowTarget:
    Type: 'AWS::SSM::MaintenanceWindowTarget'
    Properties:
      WindowId: !Ref MaintenanceWindow
      ResourceType: INSTANCE
      Targets:
        - Key: !Ref MaintenanceTargetTarget
          Values: !Ref MaintenaneTargetKeyValue
      Name: !Ref MaintenanceTargetName
      Description: !Ref MaintenanceTargetDescription
Run Code Online (Sandbox Code Playgroud)

问题在于目标部分:

      Targets:
        - Key: !Ref MaintenanceTargetTarget
          Values: !Ref MaintenaneTargetKeyValue
Run Code Online (Sandbox Code Playgroud)

以上是不正确的。下面是更正:

      Targets:
        - Key: !Ref MaintenanceTargetTarget
          Values: 
          - !Ref MaintenaneTargetKeyValue
Run Code Online (Sandbox Code Playgroud)

希望这对其他人有帮助!!


Sha*_*era 6

对于资源AWS::SSM::Parameter属性Tags应定义如下。

Tags:
    Technical:AppID: !Ref ApplicationId
    Technical:AppName: !Ref ApplicationName
    Technical:Owner: !Ref Owner
    Technical:Env: !Ref Environment
    ProjId: !Ref ProjectId
Run Code Online (Sandbox Code Playgroud)