func main() { var inst_id string if instanceID == "" { inst_id := aws.InstanceId() if inst_id == "unknown" { log.Fatalln("Unable to get instance id") } } else { inst_id = instanceID } auth, err := aws.GetAuth(accesskey, secretkey, "", time.Time{}) if err != nil { log.Fatalln("Unable to get AWS auth", err) } awsec2 = ec2.New(auth, aws.GetRegion(region)) groupMap := getSecurityGroupIds(inst_id) for _, id := range securityGroupIDs { groupMap[id] = true } groupIds := make([]string, 0, len(groupMap)) for id := range groupMap { groupIds = append(groupIds, id) } opts := &ec2.ModifyInstanceAttributeOptions{SecurityGroups: ec2.SecurityGroupIds(groupIds...)} resp, err := awsec2.ModifyInstanceAttribute(inst_id, opts) if err != nil || !resp.Return { log.Fatalln("Error adding security groups to instance", err) } log.Printf("Added security groups %s to instance %s\n", securityGroupIDs.String(), inst_id) c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL) // this waits until we get a kill signal <-c groupMap = getSecurityGroupIds(inst_id) for _, id := range securityGroupIDs { delete(groupMap, id) } groupIds = make([]string, 0, len(groupMap)) for id := range groupMap { groupIds = append(groupIds, id) } opts = &ec2.ModifyInstanceAttributeOptions{SecurityGroups: ec2.SecurityGroupIds(groupIds...)} resp, err = awsec2.ModifyInstanceAttribute(inst_id, opts) if err != nil || !resp.Return { log.Fatalln("Error removing security groups from instance", err) } log.Printf("Removed security groups %s from instance %s\n", securityGroupIDs.String(), inst_id) }
func main() { var inst_id string if instanceID == "" { inst_id := aws.InstanceId() if inst_id == "unknown" { log.Fatalln("Unable to get instance id") } } else { inst_id = instanceID } auth, err := aws.GetAuth(accesskey, secretkey, "", time.Time{}) if err != nil { log.Fatalln("Unable to get AWS auth", err) } if securityGroupID != "" { awsec2 = ec2.New(auth, aws.GetRegion(region)) groupMap := getSecurityGroupIds(inst_id) groupMap[securityGroupID] = true groupIds := make([]string, 0, len(groupMap)) for id := range groupMap { groupIds = append(groupIds, id) } opts := &ec2.ModifyInstanceAttributeOptions{SecurityGroups: ec2.SecurityGroupIds(groupIds...)} resp, err := awsec2.ModifyInstanceAttribute(inst_id, opts) if err != nil || !resp.Return { log.Fatalln("Error adding security group to instance", err) } log.Printf("Added security group %s to instance %s\n", securityGroupID, inst_id) } awselb := elb.New(auth, aws.GetRegion(region)) for _, lbname := range lbnames { _, err = awselb.RegisterInstancesWithLoadBalancer([]string{inst_id}, lbname) if err != nil { log.Fatalln("Error registering instance", err) } log.Printf("Registered instance %s with elb %s\n", inst_id, lbname) } c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL) // this waits until we get a kill signal <-c for _, lbname := range lbnames { _, err = awselb.DeregisterInstancesFromLoadBalancer([]string{inst_id}, lbname) if err != nil { log.Fatalln("Error deregistering instance", err) } log.Printf("Deregistered instance %s with elb %s\n", inst_id, lbname) } if securityGroupID != "" { groupMap := getSecurityGroupIds(inst_id) delete(groupMap, securityGroupID) groupIds := make([]string, 0, len(groupMap)) for id := range groupMap { groupIds = append(groupIds, id) } opts := &ec2.ModifyInstanceAttributeOptions{SecurityGroups: ec2.SecurityGroupIds(groupIds...)} resp, err := awsec2.ModifyInstanceAttribute(inst_id, opts) if err != nil || !resp.Return { log.Fatalln("Error removing security group from instance", err) } log.Printf("Removed security group %s from instance %s\n", securityGroupID, inst_id) } }