Error creating AWS CloudFormation Stack (AMI cannot be described)

I want to create a Amazon Web Services stack (CloudFormation) (clicking the New Stack Button to create a new AWS CLoudFormation Stack) based on this template:

{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "AWS CodeDeploy infra",
  "Parameters" : {
    "VPCID": {
      "Description" : "VPC ID",
      "Type": "String",
      "Default": "vpc-16438e72"
    },

    "myIP": {
      "Description" : "Enter your IP address in CIDR notation, e.g. 100.150.200.225/32",
      "Type": "String",
      "Default": "50.186.16.59/32"
    },

    "InstanceProfile": {
      "Description" : "Use the full ARN for SimpleCodeDeployInstanceProfile or AdvancedCodeDeployInstanceProfile",
      "Type": "String",
      "Default": "arn:aws:iam::663934185745:instance-profile/SimpleCodeDeployInstanceProfile"
    },

    "KeyName" : {
      "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances",
      "Type" : "AWS::EC2::KeyPair::KeyName",
      "ConstraintDescription" : "The name of an existing EC2 KeyPair.",
      "Default": "alexdglover"
    },
    "AZ"  : {
      "Description" : "Comma delimited list of AvailabilityZones where the instances will be created",
      "Type"        : "CommaDelimitedList",
      "Default": "us-east-1a,us-east-1c,us-east-1d"
    },

    "PublicSubnets"  : {
      "Description" : "Comma delimited list of public subnets",
      "Type"        : "CommaDelimitedList",
      "Default": "subnet-6fa38e36,subnet-4ba2f160,subnet-13b1ba64"
    },

    "InstanceType" : {
      "Description" : "Provide InstanceType to be used",
      "Type" : "String",
      "ConstraintDescription" : "Must be a valid EC2 instance type, such as t2.medium",
      "Default": "t2.medium"
    },

    "LinuxAMIID" : {
      "Description" : "Linux AMI ID",
      "Type" : "String",
      "Default": "ami-e3106686"
    },
    "WindowsAMIID" : {
      "Description" : "Windows AMI ID",
      "Type" : "String",
      "Default": "ami-f7482692"
    }
  },
  "Resources" : {
  "WebSecurityGroup": {
    "Type": "AWS::EC2::SecurityGroup",
    "Properties": {
      "GroupDescription": "WebSecurityGroup",
      "SecurityGroupEgress": [
        {
          "CidrIp": "0.0.0.0/0",
          "FromPort": -1,
          "IpProtocol": "-1",
          "ToPort": -1
        }
      ],
      "SecurityGroupIngress": [
        {
          "CidrIp": "0.0.0.0/0",
          "FromPort": 80,
          "IpProtocol": "6",
          "ToPort": 80
        },
        {
          "CidrIp": {
            "Ref": "myIP"
          },
          "IpProtocol": "-1"
        }
      ],
      "VpcId": {
        "Ref": "VPCID"
      }
    }
    },

    "LinuxWebSNSTopic" : {
      "Type" : "AWS::SNS::Topic"
    },
    "LinuxWebASG" : {
      "Type" : "AWS::AutoScaling::AutoScalingGroup",
      "Properties" : {
        "AvailabilityZones" : { "Ref" : "AZ" },
        "VPCZoneIdentifier" : { "Ref": "PublicSubnets" },
        "MinSize" : "3",
        "MaxSize" : "3",
        "HealthCheckType" : "ELB",
        "HealthCheckGracePeriod" : "600",
        "NotificationConfiguration" : {
          "TopicARN" : { "Ref" : "LinuxWebSNSTopic" },
          "NotificationTypes" : [
            "autoscaling:EC2_INSTANCE_LAUNCH",
            "autoscaling:EC2_INSTANCE_LAUNCH_ERROR",
            "autoscaling:EC2_INSTANCE_TERMINATE",
            "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"
          ]
      },
      "LoadBalancerNames" : [ { "Ref" : "LinuxWebELB" } ],
      "DesiredCapacity" : "3",
      "LaunchConfigurationName" : { "Ref" : "LinuxWebLaunchConfig" },
      "Tags" : [
        {"Key" : "Name", "Value" : "LinuxWebServer", "PropagateAtLaunch" : "true" }
      ]
     }
    },
    "LinuxWebLaunchConfig": {
      "Properties": {
        "AssociatePublicIpAddress" : "true",
        "ImageId": { "Ref": "LinuxAMIID" },
        "InstanceType": { "Ref": "InstanceType" },
        "KeyName": { "Ref": "KeyName" },
        "SecurityGroups": [ { "Ref": "WebSecurityGroup" } ],
        "IamInstanceProfile": { "Ref": "InstanceProfile" },
        "UserData": {
          "Fn::Base64": {
            "Fn::Join": [
              "",
              [
                "#!/bin/bash\n\n",
                "yum update -y\n\n",
                "yum install httpd -y\n\n",
                "yum install ruby\n\n",
                "yum install aws-cli\n\n",
                "cd ~\n\n",
                "aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1\n\n",
                "chmod +x ./install\n\n",
                "./install auto\n\n",
                "echo 'hello world' > /var/www/html/index.html\n\n",
                "hostname >> /var/www/html/index.html\n\n",
                "chkconfig httpd on\n\n",
                "service httpd start\n\n"
              ]
            ]
          }
        }
      },
      "Type": "AWS::AutoScaling::LaunchConfiguration"
    },

    "LinuxWebAutoscaleUpPolicy" : {
      "Type" : "AWS::AutoScaling::ScalingPolicy",
      "Properties" : {
        "AdjustmentType" : "ChangeInCapacity",
        "AutoScalingGroupName" : { "Ref" : "LinuxWebASG" },
        "Cooldown" : "300",
        "ScalingAdjustment" : "1"
      }
    },
    "LinuxWebAutoscaleDownPolicy" : {
      "Type" : "AWS::AutoScaling::ScalingPolicy",
      "Properties" : {
        "AdjustmentType" : "ChangeInCapacity",
        "AutoScalingGroupName" : { "Ref" : "LinuxWebASG" },
        "Cooldown" : "300",
        "ScalingAdjustment" : "-1"
      }
    },
    "LinuxWebCloudWatchCPUAlarmHigh" : {
      "Type" : "AWS::CloudWatch::Alarm",
      "Properties" : {
        "AlarmDescription" : "SNS Notification and scale up if CPU Util is Higher than 90% for 10 mins",
        "MetricName" : "CPUUtilization",
        "Namespace" : "AWS/EC2",
        "Statistic" : "Average",
        "Period" : "300",
        "EvaluationPeriods" : "2",
        "Threshold" : "90",
        "AlarmActions" : [ { "Ref": "LinuxWebAutoscaleUpPolicy" }, { "Ref" : "LinuxWebSNSTopic" } ],
        "Dimensions" : [
          {
            "Name" : "AutoScalingGroupName",
            "Value" : { "Ref" : "LinuxWebASG" }
          }
        ],
        "ComparisonOperator" : "GreaterThanThreshold"
      }
    },
    "LinuxWebCloudWatchCPUAlarmLow" : {
      "Type" : "AWS::CloudWatch::Alarm",
      "Properties" : {
        "AlarmDescription" : "SNS Notification and scale down if CPU Util is less than 70% for 10 mins",
        "MetricName" : "CPUUtilization",
        "Namespace" : "AWS/EC2",
        "Statistic" : "Average",
        "Period" : "300",
        "EvaluationPeriods" : "2",
        "Threshold" : "70",
        "AlarmActions" : [ { "Ref": "LinuxWebAutoscaleDownPolicy" }, { "Ref" : "LinuxWebSNSTopic" } ],
        "Dimensions" : [
          {
            "Name" : "AutoScalingGroupName",
            "Value" : { "Ref" : "LinuxWebASG" }
          }
        ],
        "ComparisonOperator" : "LessThanThreshold"
      }
    },

    "LinuxWebELB" : {
      "Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
      "Properties" : {
        "CrossZone" : true,
        "ConnectionDrainingPolicy": {
          "Enabled" : "true",
          "Timeout" : "60"
        },
        "HealthCheck" :  {
          "Target" : "HTTP:80/index.html",
          "HealthyThreshold" : "3",
          "UnhealthyThreshold" : "3",
          "Interval" : "15",
          "Timeout" : "5"
        },
        "LoadBalancerName" :  "LinuxWebELB",
        "Scheme" : "internet-facing",
        "Listeners" : [
        {
          "LoadBalancerPort" : "80",
          "InstancePort" : "80",
          "InstanceProtocol" : "HTTP",
          "Protocol" :  "HTTP"
        }

         ],
        "SecurityGroups": [ { "Ref": "WebSecurityGroup" } ],
        "Subnets" : { "Ref": "PublicSubnets" },
        "Tags" : [{"Key" : "Network", "Value" : "public"}]
      }
    },
    "WindowsWebSNSTopic" : {
      "Type" : "AWS::SNS::Topic"
    },
    "WindowsWebASG" : {
      "Type" : "AWS::AutoScaling::AutoScalingGroup",
      "Properties" : {
        "AvailabilityZones" : { "Ref" : "AZ" },
        "VPCZoneIdentifier" : { "Ref": "PublicSubnets" },
        "MinSize" : "3",
        "MaxSize" : "3",
        "HealthCheckType" : "ELB",
        "HealthCheckGracePeriod" : "600",
        "NotificationConfiguration" : {
          "TopicARN" : { "Ref" : "WindowsWebSNSTopic" },
          "NotificationTypes" : [
            "autoscaling:EC2_INSTANCE_LAUNCH",
            "autoscaling:EC2_INSTANCE_LAUNCH_ERROR",
            "autoscaling:EC2_INSTANCE_TERMINATE",
            "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"
          ]
      },
      "LoadBalancerNames" : [ { "Ref" : "WindowsWebELB" } ],
      "DesiredCapacity" : "3",
      "LaunchConfigurationName" : { "Ref" : "WindowsWebLaunchConfig" },
      "Tags" : [
        {"Key" : "Name", "Value" : "WindowsWebServer", "PropagateAtLaunch" : "true" }
      ]
     }
    },
    "WindowsWebLaunchConfig": {
      "Properties": {
        "AssociatePublicIpAddress" : "true",
        "ImageId": { "Ref": "WindowsAMIID" },
        "InstanceType": { "Ref": "InstanceType" },
        "KeyName": { "Ref": "KeyName" },
        "SecurityGroups": [ { "Ref": "WebSecurityGroup" } ],
        "IamInstanceProfile": { "Ref": "InstanceProfile" },
        "UserData": {
          "Fn::Base64": {
            "Fn::Join": [
              "",
              [
                "<script>\n",
                  "echo hello world > c:\\inetpub\\wwwroot\\index.html\n",
                  "hostname >> c:\\inetpub\\wwwroot\\index.html\n",
                  "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\n",
                  "c:\\temp\\codedeploy-agent.msi /quiet /l c:\\temp\\host-agent-install-log.txt\n",
                  "powershell.exe -Command Get-Service -Name codedeployagent\n",
                "</script>\n"
              ]
            ]
          }
        }
      },
      "Type": "AWS::AutoScaling::LaunchConfiguration"
    },

    "WindowsWebAutoscaleUpPolicy" : {
      "Type" : "AWS::AutoScaling::ScalingPolicy",
      "Properties" : {
        "AdjustmentType" : "ChangeInCapacity",
        "AutoScalingGroupName" : { "Ref" : "WindowsWebASG" },
        "Cooldown" : "300",
        "ScalingAdjustment" : "1"
      }
    },
    "WindowsWebAutoscaleDownPolicy" : {
      "Type" : "AWS::AutoScaling::ScalingPolicy",
      "Properties" : {
        "AdjustmentType" : "ChangeInCapacity",
        "AutoScalingGroupName" : { "Ref" : "WindowsWebASG" },
        "Cooldown" : "300",
        "ScalingAdjustment" : "-1"
      }
    },
    "WindowsWebCloudWatchCPUAlarmHigh" : {
      "Type" : "AWS::CloudWatch::Alarm",
      "Properties" : {
        "AlarmDescription" : "SNS Notification and scale up if CPU Util is Higher than 90% for 10 mins",
        "MetricName" : "CPUUtilization",
        "Namespace" : "AWS/EC2",
        "Statistic" : "Average",
        "Period" : "300",
        "EvaluationPeriods" : "2",
        "Threshold" : "90",
        "AlarmActions" : [ { "Ref": "WindowsWebAutoscaleUpPolicy" }, { "Ref" : "WindowsWebSNSTopic" } ],
        "Dimensions" : [
          {
            "Name" : "AutoScalingGroupName",
            "Value" : { "Ref" : "WindowsWebASG" }
          }
        ],
        "ComparisonOperator" : "GreaterThanThreshold"
      }
    },
    "WindowsWebCloudWatchCPUAlarmLow" : {
      "Type" : "AWS::CloudWatch::Alarm",
      "Properties" : {
        "AlarmDescription" : "SNS Notification and scale down if CPU Util is less than 70% for 10 mins",
        "MetricName" : "CPUUtilization",
        "Namespace" : "AWS/EC2",
        "Statistic" : "Average",
        "Period" : "300",
        "EvaluationPeriods" : "2",
        "Threshold" : "70",
        "AlarmActions" : [ { "Ref": "WindowsWebAutoscaleDownPolicy" }, { "Ref" : "WindowsWebSNSTopic" } ],
        "Dimensions" : [
          {
            "Name" : "AutoScalingGroupName",
            "Value" : { "Ref" : "WindowsWebASG" }
          }
        ],
        "ComparisonOperator" : "LessThanThreshold"
      }
    },

    "WindowsWebELB" : {
      "Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
      "Properties" : {
        "CrossZone" : true,
        "ConnectionDrainingPolicy": {
          "Enabled" : "true",
          "Timeout" : "60"
        },
        "HealthCheck" :  {
          "Target" : "HTTP:80/index.html",
          "HealthyThreshold" : "3",
          "UnhealthyThreshold" : "3",
          "Interval" : "15",
          "Timeout" : "5"
        },
        "LoadBalancerName" :  "WindowsWebELB",
        "Scheme" : "internet-facing",
        "Listeners" : [
        {
          "LoadBalancerPort" : "80",
          "InstancePort" : "80",
          "InstanceProtocol" : "HTTP",
          "Protocol" :  "HTTP"
        }

         ],
        "SecurityGroups": [ { "Ref": "WebSecurityGroup" } ],
        "Subnets" : { "Ref": "PublicSubnets" },
        "Tags" : [{"Key" : "Network", "Value" : "public"}]
      }
    }

  },
  "Outputs" : {
    "LinuxWebFQDN" : { "Value": { "Fn::GetAtt" : [ "LinuxWebELB", "DNSName" ]} },
    "WindowsWebFQDN" : { "Value": { "Fn::GetAtt" : [ "WindowsWebELB", "DNSName" ]} }
  }
}

but I got some errors in the creation step:

21:44:58 UTC+0200   DELETE_IN_PROGRESS  AWS::EC2::SecurityGroup WebSecurityGroup    
    21:44:56 UTC+0200   DELETE_COMPLETE AWS::ElasticLoadBalancing::LoadBalancer LinuxWebELB 
    21:44:55 UTC+0200   DELETE_COMPLETE AWS::SNS::Topic LinuxWebSNSTopic    
    21:44:54 UTC+0200   DELETE_COMPLETE AWS::SNS::Topic WindowsWebSNSTopic  
    21:44:54 UTC+0200   DELETE_COMPLETE AWS::ElasticLoadBalancing::LoadBalancer WindowsWebELB   
    21:44:54 UTC+0200   DELETE_COMPLETE AWS::AutoScaling::LaunchConfiguration   LinuxWebLaunchConfig    
    21:44:53 UTC+0200   DELETE_IN_PROGRESS  AWS::AutoScaling::LaunchConfiguration   LinuxWebLaunchConfig    
    21:44:53 UTC+0200   DELETE_IN_PROGRESS  AWS::ElasticLoadBalancing::LoadBalancer LinuxWebELB 
    21:44:53 UTC+0200   DELETE_COMPLETE AWS::AutoScaling::LaunchConfiguration   WindowsWebLaunchConfig  
    21:44:53 UTC+0200   DELETE_IN_PROGRESS  AWS::SNS::Topic WindowsWebSNSTopic  
    21:44:53 UTC+0200   DELETE_IN_PROGRESS  AWS::SNS::Topic LinuxWebSNSTopic    
    21:44:53 UTC+0200   DELETE_IN_PROGRESS  AWS::ElasticLoadBalancing::LoadBalancer WindowsWebELB   
    21:44:47 UTC+0200   ROLLBACK_IN_PROGRESS    AWS::CloudFormation::Stack  Infra   The following resource(s) failed to create: [WindowsWebLaunchConfig, LinuxWebELB, WindowsWebELB]. . Rollback requested by user.
    21:44:46 UTC+0200   CREATE_FAILED   AWS::ElasticLoadBalancing::LoadBalancer LinuxWebELB Resource creation cancelled
    21:44:45 UTC+0200   CREATE_FAILED   AWS::ElasticLoadBalancing::LoadBalancer WindowsWebELB   Resource creation cancelled
    21:44:45 UTC+0200   CREATE_COMPLETE AWS::AutoScaling::LaunchConfiguration   LinuxWebLaunchConfig    
    21:44:44 UTC+0200   CREATE_FAILED   AWS::AutoScaling::LaunchConfiguration   WindowsWebLaunchConfig  AMI cannot be described
    21:44:44 UTC+0200   CREATE_IN_PROGRESS  AWS::ElasticLoadBalancing::LoadBalancer WindowsWebELB   Resource creation Initiated
    21:44:44 UTC+0200   CREATE_IN_PROGRESS  AWS::AutoScaling::LaunchConfiguration   LinuxWebLaunchConfig    Resource creation Initiated
    21:44:44 UTC+0200   CREATE_IN_PROGRESS  AWS::AutoScaling::LaunchConfiguration   WindowsWebLaunchConfig  
    21:44:43 UTC+0200   CREATE_IN_PROGRESS  AWS::AutoScaling::LaunchConfiguration   LinuxWebLaunchConfig    
    21:44:43 UTC+0200   CREATE_IN_PROGRESS  AWS::ElasticLoadBalancing::LoadBalancer LinuxWebELB 
    21:44:43 UTC+0200   CREATE_IN_PROGRESS  AWS::ElasticLoadBalancing::LoadBalancer WindowsWebELB   
    21:44:39 UTC+0200   CREATE_COMPLETE AWS::EC2::SecurityGroup WebSecurityGroup    
    21:44:37 UTC+0200   CREATE_IN_PROGRESS  AWS::EC2::SecurityGroup WebSecurityGroup    Resource creation Initiated
    21:44:32 UTC+0200   CREATE_COMPLETE AWS::SNS::Topic WindowsWebSNSTopic  
    21:44:31 UTC+0200   CREATE_COMPLETE AWS::SNS::Topic LinuxWebSNSTopic    
    21:44:21 UTC+0200   CREATE_IN_PROGRESS  AWS::SNS::Topic WindowsWebSNSTopic  Resource creation Initiated
    21:44:21 UTC+0200   CREATE_IN_PROGRESS  AWS::SNS::Topic WindowsWebSNSTopic  
    21:44:20 UTC+0200   CREATE_IN_PROGRESS  AWS::EC2::SecurityGroup WebSecurityGroup    
    21:44:20 UTC+0200   CREATE_IN_PROGRESS  AWS::SNS::Topic LinuxWebSNSTopic    Resource creation Initiated
    21:44:19 UTC+0200   CREATE_IN_PROGRESS  AWS::SNS::Topic LinuxWebSNSTopic    
    21:44:12 UTC+0200   CREATE_IN_PROGRESS  AWS::CloudFormation::Stack  Infra   User Initiated

Upvotes: 1

Views: 3041

Answers (2)

t j
t j

Reputation: 7324

I had this issue combining Packer EC2 builds with CDK. As the other answers said, it's essentially a 404 on the AMI ID which didn't initially make sense to me as I was using a CDK lookup on name/account rather than an explicit AMI ID.

The reason it wasn't working is that CDK caches AMI lookups in the cdk.context.json file.

By deleting this file and adding it to the .gitignore file, the builds started passing again.

Upvotes: 0

300D7309EF17
300D7309EF17

Reputation: 24643

Your WindowsAMIID (ami-f7482692) doesn't exist anymore. You can try searching for it in the EC2 console to see what I mean. It shows up on some AMI indexing site as 'deregistered'.

In the future please create a minimal example.

Upvotes: 6

Related Questions