func (lt *opsworksLayerType) Create(d *schema.ResourceData, client *opsworks.OpsWorks) error { req := &opsworks.CreateLayerInput{ AutoAssignElasticIps: aws.Bool(d.Get("auto_assign_elastic_ips").(bool)), AutoAssignPublicIps: aws.Bool(d.Get("auto_assign_public_ips").(bool)), CustomInstanceProfileArn: aws.String(d.Get("custom_instance_profile_arn").(string)), CustomRecipes: lt.CustomRecipes(d), CustomSecurityGroupIds: expandStringSet(d.Get("custom_security_group_ids").(*schema.Set)), EnableAutoHealing: aws.Bool(d.Get("auto_healing").(bool)), InstallUpdatesOnBoot: aws.Bool(d.Get("install_updates_on_boot").(bool)), LifecycleEventConfiguration: lt.LifecycleEventConfiguration(d), Name: aws.String(d.Get("name").(string)), Packages: expandStringSet(d.Get("system_packages").(*schema.Set)), Type: aws.String(lt.TypeName), StackId: aws.String(d.Get("stack_id").(string)), UseEbsOptimizedInstances: aws.Bool(d.Get("use_ebs_optimized_instances").(bool)), Attributes: lt.AttributeMap(d), VolumeConfigurations: lt.VolumeConfigurations(d), } if lt.CustomShortName { req.Shortname = aws.String(d.Get("short_name").(string)) } else { req.Shortname = aws.String(lt.TypeName) } req.CustomJson = aws.String(d.Get("custom_json").(string)) log.Printf("[DEBUG] Creating OpsWorks layer: %s", d.Id()) resp, err := client.CreateLayer(req) if err != nil { return err } layerId := *resp.LayerId d.SetId(layerId) d.Set("id", layerId) loadBalancer := aws.String(d.Get("elastic_load_balancer").(string)) if loadBalancer != nil && *loadBalancer != "" { log.Printf("[DEBUG] Attaching load balancer: %s", *loadBalancer) _, err := client.AttachElasticLoadBalancer(&opsworks.AttachElasticLoadBalancerInput{ ElasticLoadBalancerName: loadBalancer, LayerId: &layerId, }) if err != nil { return err } } return lt.Read(d, client) }