2017-10-19 30 views
-2

J'ai un modèle de cloudformation.Erreur de modèle de Cloudformation - Erreur de validation de modèle: Erreur de format de modèle: Chaque type de membre Mappings doit être une carte

Il doit créer une instance EC2, modifier le mot de passe Administrateur et renommer le serveur.

Je passe quelques paramètres au modèle de pile. Quand je l'exécute, cela donne "Erreur de format de template: Chaque type de membre Mappings doit être une map".

Je me suis assuré que tout ce que je fais référence dans le modèle, sont dans la section "Mappages". Je ne sais pas pourquoi je reçois cette erreur.

Toutes les suggestions sont très utiles.

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 

    "Parameters": { 

"LocalAdminPassword" : 
{ 
    "Type": "String", 
    "NoEcho" : "true", 
    "Description": "Password for the local server administrator account." 
    } 
}, 

"Mappings": { 

"EnvironmentTypeName" : 
{ 
    "PlatformName" : {"Dev" : "D", "Test" : "T", "Prod" : "P"} 
}, 
"QRMEnvironmentType" : 
{ 
    "Description" : "QRM Dev, test, or Prod Platform", 
    "Type"   : "String", 
    "AllowedValues" : ["Dev", "Test", "Prod"], 
    "Default" : "Dev", 
    "ConstraintDescription" : "must be either Dev, test, or Prod" 
}, 
"QRMAvailabilityZoneIndex" : 
{ 
    "Description" : "QRM Platform AZ letter A,B, or C for Dev, Test, or Prod", 
    "Type"   : "String", 
    "AllowedValues" : ["A", "B", "C"], 
    "Default" : "A", 
    "ConstraintDescription" : "Must be a letter of the AZ in the specified Region" 
    } 
}, 

"Resources": { 
     "MyInstance": { 
     "Type": "AWS::EC2::Instance", 
     "Metadata" : { 
      "AWS::CloudFormation::Init" : { 
     "config" : { 
      "files" : { 
      "c:\\cfn\\cfn-hup.conf" : { 
       "content" : { "Fn::Join" : ["", [ 
       "[main]\n", 
       "stack=", { "Ref" : "AWS::StackId" }, "\n", 
       "region=", { "Ref" : "AWS::Region" }, "\n" 
       ]]} 
      }, 
      "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf" : { 
       "content": { "Fn::Join" : ["", [ 
       "[cfn-auto-reloader-hook]\n", 
       "triggers=post.update\n", 
      "path=Resources.MyInstance.Metadata.AWS::CloudFormation::Init\n", 
       "action=cfn-init.exe -v -s ", { "Ref" : "AWS::StackId" }, 
               " -r MyInstance", 
               " --region ", { "Ref" : "AWS::Region" }, "\n" 
       ]]} 
      }, 
      "c:\\scripts\\test.ps1" : { 
       "content": { "Fn::Join" : ["", [ 
       "Write-Host Hello World!\n" 
       ]]} 
      } 
      }, 
      "commands" : { 

      "1-run-script" : 
      { 
       "command" : 
        { 
         "Fn::Join" : 
         [ 
         "", 
         [ 
          "Powershell.exe ([adsi]\\\"WinNT://$env:computername/Administrator\\\").SetPassword('",{ "Ref": "LocalAdminPassword"},"')" 
         ] 
         ] 
        } 
      }, 
      "02-rename-server" : 
        { 
        "command" : 
        { 
         "Fn::Join" : 
         [ 
         "", 
         [ 
          "powershell.exe Rename-Computer -NewName ", {"Fn::Join" : [ "",[ "AW", {"Fn::FindInMap" : [ "EnvironmentTypeName", "PlatformName", {"Ref" : "QRMEnvironmentType"} ]},"W",{"Ref": "QRMAvailabilityZoneIndex"},"QRMHEAD"]] } ," -force -restart" 
         ] 
         ] 
        }, 
        "WaitAfterCompletion" : "forever" 
        },     
       "3-run-script" : { 
        "command" : { "Fn::Join" : [ "", [ 
         "Powershell.exe Set-ExecutionPolicy Unrestricted -force \n", 
         "Powershell.exe C:\\scripts\\test.ps1 \n", 
         "Powershell.exe Start-Sleep -s 60; . C:\\PowershellScripts\\WindowsServiceManager.ps1;StopWindowsService Dnscache" , "\n" 
         ]]}} 
       }, 
      "services": { 
       "windows": { 
        "cfn-hup": { 
          "enabled": "true", 
          "ensureRunning": "true", 
          "files": ["c:\\cfn\\cfn-hup.conf", "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf"] 
                  } 
           } 
              } 
    }         
          } 
    }, 
"Properties": { 
    "DisableApiTermination": "FALSE", 
    "ImageId": "ami-3723c04f", 
    "InstanceType": "t2.micro", 
    "KeyName": "EC2Instances", 
    "Monitoring": "false", 
    "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ 
    "<script>\n", 
    "cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, 
    " -r MyInstance", 
    " --region ", { "Ref" : "AWS::Region" }, "\n", 

    "cfn-signal.exe -e 0 ", { "Fn::Base64" : { "Ref" : "WindowsServerWaitHandle" }}, "\n", 

    "</script>\n" 
    ]]}}, 
    "Tags": [ 
    { 
     "Key": "Name", 
     "Value": "MyEC2Instance" 
    } 
    ], 

    } 
    , 
    "WindowsServerWaitHandle": { 
     "Type": "AWS::CloudFormation::WaitConditionHandle" 
    }, 
    "WindowsServerWaitCondition": { 
      "Type": "AWS::CloudFormation::WaitCondition", 
      "DependsOn": "MyInstance", 
     "Properties": { 
    "Handle": { "Ref": "WindowsServerWaitHandle" }, 
    "Timeout": "1800" 
    } 
    }   
} 
} 
+0

Comment est-ce pas une question valable? Ce forum devient fou. expliquez pourquoi ma question a été rejetée? – jason

Répondre

0

J'ai rencontré le même problème avec le modèle yaml. Il ressemble à seulement 2 correspondances niveau sont pris en charge dans le modèle, vous devez ajouter un autre niveau, le cas échéant, par exemple,

... 
"QRMEnvironmentType" : 
{ 
    "Description" : {"Value": "QRM Dev, test, or Prod Platform"}, 
    "Type"   : {"Value": "String"}, 
    ... 
} 
...