2017-03-28 5 views
0

Ich habe eine Cloudformations Vorlage, die, wenn ich es validiere, scheint es gültig zu sein Ich erhalte keine Fehler mit dem Linter-Tool in Atom und ich habe auch ein Online-Yaml-Validierungs-Tool, das bestätigt, ist aber korrekt wenn ich die Vorlage in CFN bereitstellen es mit Fehler fehlschlägtvalidierte cloudformation yaml template

Template validation error: Template format error: Unresolved resource dependencies [AgentserviceSNSTopic] in the Resources block of the template 

ich keine Fehler sehen kann (bin nicht sicher, wie die Formatierung aber die Vorlage sein wird, ist unten)

AWSTemplateFormatVersion: '2010-09-09' 
Description: AgentService Web infra 
Outputs: 
    AgentServiceFQDN: 
    Value: 
     'Fn::GetAtt': 
     - AgentServiceELB 
     - DNSName 
Parameters: 
    AZ: 
    Default: 'ap-southeast-2a, ap-southeast-2b' 
    Description: >- 
     Comma delimited list of AvailabilityZones where the instances will be 
     created 
    Type: CommaDelimitedList 
    InstanceProfile: 
    Default: >- 
     arn:aws:iam::112888586165:instance-profile/AdvanceCodeDeployInstanceProfile 
    Description: >- 
     Use the full ARN for SimpleCodeDeployInstanceProfile or 
     AdvancedCodeDeployInstanceProfile 
    Type: String 
    InstanceType: 
    ConstraintDescription: 'Must be a valid EC2 instance type, such as t2.medium' 
    Default: t2.medium 
    Description: Provide InstanceType to be used 
    Type: String 
    KeyName: 
    ConstraintDescription: The name of an existing EC2 KeyPair. 
    Default: LMBRtraining 
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instances 
    Type: 'AWS::EC2::KeyPair::KeyName' 
    PublicSubnets: 
    Default: 'subnet-bb0a3ade,subnet-fedd8389' 
    Description: Comma delimited list of public subnets 
    Type: CommaDelimitedList 
    VPCID: 
    Default: vpc-a18eccc4 
    Description: VPC ID 
    Type: String 
    WindowsAMIID: 
    Default: ami-5a989d39 
    Description: Windows AMI ID with IIS 
    Type: String 
    myIP: 
    Default: 0.0.0.0/0 
    Description: 'Enter your IP address in CIDR notation, e.g. 100.150.200.225/32' 
    Type: String 
Resources: 
    AgentServiceASG: 
    Properties: 
     AvailabilityZones: 
     Ref: AZ 
     DesiredCapacity: '2' 
     HealthCheckGracePeriod: '600' 
     HealthCheckType: ELB 
     LaunchConfigurationName: 
     Ref: AgentServiceLaunchConfig 
     LoadBalancerNames: 
     - Ref: AgentServiceELB 
     MaxSize: '2' 
     MinSize: '2' 
     NotificationConfiguration: 
     NotificationTypes: 
      - 'autoscaling:EC2_INSTANCE_LAUNCH' 
      - 'autoscaling:EC2_INSTANCE_LAUNCH_ERROR' 
      - 'autoscaling:EC2_INSTANCE_TERMINATE' 
      - 'autoscaling:EC2_INSTANCE_TERMINATE_ERROR' 
     TopicARN: 
      Ref: AgentServiceSNSTopic 
     Tags: 
     - Key: Name 
      PropagateAtLaunch: 'true' 
      Value: AgentServiceServer 
     VPCZoneIdentifier: 
     Ref: PublicSubnets 
    Type: 'AWS::AutoScaling::AutoScalingGroup' 
    AgentServiceAutoscaleDownPolicy: 
    Properties: 
     AdjustmentType: ChangeInCapacity 
     AutoScalingGroupName: 
     Ref: AgentServiceASG 
     Cooldown: '300' 
     ScalingAdjustment: '-1' 
    Type: 'AWS::AutoScaling::ScalingPolicy' 
    AgentServiceAutoscaleUpPolicy: 
    Properties: 
     AdjustmentType: ChangeInCapacity 
     AutoScalingGroupName: 
     Ref: AgentServiceASG 
     Cooldown: '300' 
     ScalingAdjustment: '1' 
    Type: 'AWS::AutoScaling::ScalingPolicy' 
    AgentServiceCloudWatchCPUAlarmHigh: 
    Properties: 
     AlarmActions: 
     - Ref: AgentServiceAutoscaleUpPolicy 
     - Ref: AgentServiceSNSTopic 
     AlarmDescription: SNS Notification and scale up if CPU Util is Higher than 90% for 10 mins 
     ComparisonOperator: GreaterThanThreshold 
     Dimensions: 
     - Name: AutoScalingGroupName 
      Value: 
      Ref: AgentServiceASG 
     EvaluationPeriods: '2' 
     MetricName: CPUUtilization 
     Namespace: AWS/EC2 
     Period: '300' 
     Statistic: Average 
     Threshold: '90' 
    Type: 'AWS::CloudWatch::Alarm' 
    AgentServiceCloudWatchCPUAlarmLow: 
    Properties: 
     AlarmActions: 
     - Ref: AgentServiceAutoscaleDownPolicy 
     - Ref: AgentserviceSNSTopic 
     AlarmDescription: SNS Notification and scale down if CPU Util is less than 70% for 10 mins 
     ComparisonOperator: LessThanThreshold 
     Dimensions: 
     - Name: AutoScalingGroupName 
      Value: 
      Ref: AgentServiceASG 
     EvaluationPeriods: '2' 
     MetricName: CPUUtilization 
     Namespace: AWS/EC2 
     Period: '300' 
     Statistic: Average 
     Threshold: '70' 
    Type: 'AWS::CloudWatch::Alarm' 
    AgentServiceELB: 
    Properties: 
     ConnectionDrainingPolicy: 
     Enabled: 'true' 
     Timeout: '60' 
     CrossZone: true 
     HealthCheck: 
     HealthyThreshold: '3' 
     Interval: '15' 
     Target: 'HTTP:80/index.html' 
     Timeout: '5' 
     UnhealthyThreshold: '3' 
     Listeners: 
     - InstancePort: '80' 
      InstanceProtocol: HTTP 
      LoadBalancerPort: '80' 
      Protocol: HTTP 
     LoadBalancerName: AgentServiceELB 
     Scheme: internet-facing 
     SecurityGroups: 
     - Ref: AgentServiceSecurityGroup 
     Subnets: 
     Ref: PublicSubnets 
     Tags: 
     - Key: Network 
      Value: public 
    Type: 'AWS::ElasticLoadBalancing::LoadBalancer' 
    AgentServiceLaunchConfig: 
    Properties: 
     AssociatePublicIpAddress: 'true' 
     IamInstanceProfile: 
     Ref: InstanceProfile 
     ImageId: 
     Ref: WindowsAMIID 
     InstanceType: 
     Ref: InstanceType 
     KeyName: 
     Ref: KeyName 
     SecurityGroups: 
     - Ref: AgentServiceSecurityGroup 
     UserData: 
     'Fn::Base64': 
      'Fn::Join': 
      - '' 
      - - | 
       <script> 
       - | 
       echo hello world > c:\\inetpub\\wwwroot\\index.html 
       - | 
       hostname >> c:\\inetpub\\wwwroot\\index.html 
       - "if not exist \\"c:\\temp\\" mkdir c:\\temp\\n" 
       - > 
       powershell.exe -Command Read-S3Object -BucketName 
       aws-codedeploy-us-east-1/latest -Key codedeploy-agent.msi -File 
       c:\\temp\\codedeploy-agent.msi 
       - > 
       c:\\temp\\codedeploy-agent.msi /quiet /l 
       c:\\temp\\host-agent-install-log.txt 
       - | 
       powershell.exe -Command Get-Service -Name codedeployagent 
       - | 
       </script> 
    Type: 'AWS::AutoScaling::LaunchConfiguration' 
    AgentServiceSNSTopic: 
    Type: 'AWS::SNS::Topic' 
    AgentServiceSecurityGroup: 
    Properties: 
     GroupDescription: AgentServiceSecurityGroup 
     InstanceAccessHTTPS: 
     Properties: 
      CidrIp: 0.0.0.0/0 
      FromPort: '443' 
      GroupId: AgentServiceSecurityGroup 
      IpProtocol: tcp 
      ToPort: '443' 
     Type: 'AWS::EC2::SecurityGroupIngress' 
     InstanceAccessPSremote: 
     Properties: 
      CidrIp: 198.18.0.0/24 
      FromPort: '5985' 
      GroupId: AgentServiceSecurityGroup 
      IpProtocol: tcp 
      ToPort: '5985' 
     Type: 'AWS::EC2::SecurityGroupIngress' 
     InstanceAccessRDP: 
     Properties: 
      CidrIp: 0.0.0.0/0 
      FromPort: '3389' 
      GroupId: AgentServiceSecurityGroup 
      IpProtocol: tcp 
      ToPort: '3389' 
     Type: 'AWS::EC2::SecurityGroupIngress' 
     InstanceAccessSMB: 
     Properties: 
      CidrIp: 198.18.0.0/24 
      FromPort: '445' 
      GroupId: AgentServiceSecurityGroup 
      IpProtocol: tcp 
      ToPort: '445' 
     Type: 'AWS::EC2::SecurityGroupIngress' 
     VpcId: 
     Ref: VPCID 
    Type: 'AWS::EC2::SecurityGroup' 
+0

Diese Zeile ist ein Syntaxfehler: '-" wenn nicht vorhanden \\ "c: \\ temp \\" mkdir c: \\ temp \\ n "' Es sollte wahrscheinlich '-" wenn nicht vorhanden \ " c: \\ temp \ "mkdir c: \ temp \\ n" ' – flyx

Antwort

1

es Es wäre interessant zu wissen, welcher Online-Validierer Ihr "val ID YAML ". Die Online YAML Parser und YAML Lint beschwerten sich beide, wenn Sie Ihre YAML als Eingabe verwenden. Nach dem Ändern der Linie zeigt dieser YAML-Parser als problematisch:

- "if not exist \\"c:\\temp\\" mkdir c:\\temp\\n" 

, die ein zitierte Skalar "if not exist \\"c:\\temp\\" von mehr gefolgt mkdir ... in:

- "if not exist \"c:\\temp\" mkdir c:\\temp\n" 

, in denen die Zitate sind entkommen, oder auf die besser lesbar:

- | 
    if not exist "c:\temp" mkdir c:\temp 

die Code Beautify YAML Validator beschweren sie, dass Ihre YAML Probleme hat, aber wie üblich mit dem korrigierten YAML entweder nicht umgehen, also benutze das nicht.

Verwandte Themen