func resourceAwsAutoscalingGroupCreate(d *schema.ResourceData, meta interface{}) error { autoscalingconn := meta.(*AWSClient).autoscalingconn var autoScalingGroupOpts autoscaling.CreateAutoScalingGroup autoScalingGroupOpts.Name = d.Get("name").(string) autoScalingGroupOpts.HealthCheckType = d.Get("health_check_type").(string) autoScalingGroupOpts.LaunchConfigurationName = d.Get("launch_configuration").(string) autoScalingGroupOpts.MinSize = d.Get("min_size").(int) autoScalingGroupOpts.MaxSize = d.Get("max_size").(int) autoScalingGroupOpts.SetMinSize = true autoScalingGroupOpts.SetMaxSize = true autoScalingGroupOpts.AvailZone = expandStringList( d.Get("availability_zones").(*schema.Set).List()) if v, ok := d.GetOk("default_cooldown"); ok { autoScalingGroupOpts.DefaultCooldown = v.(int) autoScalingGroupOpts.SetDefaultCooldown = true } if v, ok := d.GetOk("desired_capacity"); ok { autoScalingGroupOpts.DesiredCapacity = v.(int) autoScalingGroupOpts.SetDesiredCapacity = true } if v, ok := d.GetOk("health_check_grace_period"); ok { autoScalingGroupOpts.HealthCheckGracePeriod = v.(int) autoScalingGroupOpts.SetHealthCheckGracePeriod = true } if v, ok := d.GetOk("load_balancers"); ok { autoScalingGroupOpts.LoadBalancerNames = expandStringList( v.(*schema.Set).List()) } if v, ok := d.GetOk("vpc_zone_identifier"); ok { autoScalingGroupOpts.VPCZoneIdentifier = expandStringList( v.(*schema.Set).List()) } if v, ok := d.GetOk("termination_policies"); ok { autoScalingGroupOpts.TerminationPolicies = expandStringList( v.(*schema.Set).List()) } log.Printf("[DEBUG] AutoScaling Group create configuration: %#v", autoScalingGroupOpts) _, err := autoscalingconn.CreateAutoScalingGroup(&autoScalingGroupOpts) if err != nil { return fmt.Errorf("Error creating Autoscaling Group: %s", err) } d.SetId(d.Get("name").(string)) log.Printf("[INFO] AutoScaling Group ID: %s", d.Id()) return resourceAwsAutoscalingGroupRead(d, meta) }