// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

package autoscaling_test

import (
	"fmt"
	"strings"
	"time"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awserr"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/autoscaling"
)

var _ time.Duration
var _ strings.Reader
var _ aws.Config

func parseTime(layout, value string) *time.Time {
	t, err := time.Parse(layout, value)
	if err != nil {
		panic(err)
	}
	return &t
}

// To attach an instance to an Auto Scaling group
//
// This example attaches the specified instance to the specified Auto Scaling group.
func ExampleAutoScaling_AttachInstances_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.AttachInstancesInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		InstanceIds: []*string{
			aws.String("i-93633f9b"),
		},
	}

	result, err := svc.AttachInstances(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To attach a target group to an Auto Scaling group
//
// This example attaches the specified target group to the specified Auto Scaling group.
func ExampleAutoScaling_AttachLoadBalancerTargetGroups_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.AttachLoadBalancerTargetGroupsInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		TargetGroupARNs: []*string{
			aws.String("arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"),
		},
	}

	result, err := svc.AttachLoadBalancerTargetGroups(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To attach a load balancer to an Auto Scaling group
//
// This example attaches the specified load balancer to the specified Auto Scaling group.
func ExampleAutoScaling_AttachLoadBalancers_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.AttachLoadBalancersInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		LoadBalancerNames: []*string{
			aws.String("my-load-balancer"),
		},
	}

	result, err := svc.AttachLoadBalancers(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To complete the lifecycle action
//
// This example notifies Auto Scaling that the specified lifecycle action is complete
// so that it can finish launching or terminating the instance.
func ExampleAutoScaling_CompleteLifecycleAction_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.CompleteLifecycleActionInput{
		AutoScalingGroupName:  aws.String("my-auto-scaling-group"),
		LifecycleActionResult: aws.String("CONTINUE"),
		LifecycleActionToken:  aws.String("bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635"),
		LifecycleHookName:     aws.String("my-lifecycle-hook"),
	}

	result, err := svc.CompleteLifecycleAction(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To create an Auto Scaling group
//
// This example creates an Auto Scaling group.
func ExampleAutoScaling_CreateAutoScalingGroup_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.CreateAutoScalingGroupInput{
		AutoScalingGroupName:    aws.String("my-auto-scaling-group"),
		LaunchConfigurationName: aws.String("my-launch-config"),
		MaxSize:                 aws.Int64(3),
		MinSize:                 aws.Int64(1),
		VPCZoneIdentifier:       aws.String("subnet-4176792c"),
	}

	result, err := svc.CreateAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeAlreadyExistsFault:
				fmt.Println(autoscaling.ErrCodeAlreadyExistsFault, aerr.Error())
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To create an Auto Scaling group with an attached load balancer
//
// This example creates an Auto Scaling group and attaches the specified Classic Load
// Balancer.
func ExampleAutoScaling_CreateAutoScalingGroup_shared01() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.CreateAutoScalingGroupInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		AvailabilityZones: []*string{
			aws.String("us-west-2c"),
		},
		HealthCheckGracePeriod:  aws.Int64(120),
		HealthCheckType:         aws.String("ELB"),
		LaunchConfigurationName: aws.String("my-launch-config"),
		LoadBalancerNames: []*string{
			aws.String("my-load-balancer"),
		},
		MaxSize: aws.Int64(3),
		MinSize: aws.Int64(1),
	}

	result, err := svc.CreateAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeAlreadyExistsFault:
				fmt.Println(autoscaling.ErrCodeAlreadyExistsFault, aerr.Error())
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To create an Auto Scaling group with an attached target group
//
// This example creates an Auto Scaling group and attaches the specified target group.
func ExampleAutoScaling_CreateAutoScalingGroup_shared02() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.CreateAutoScalingGroupInput{
		AutoScalingGroupName:    aws.String("my-auto-scaling-group"),
		HealthCheckGracePeriod:  aws.Int64(120),
		HealthCheckType:         aws.String("ELB"),
		LaunchConfigurationName: aws.String("my-launch-config"),
		MaxSize:                 aws.Int64(3),
		MinSize:                 aws.Int64(1),
		TargetGroupARNs: []*string{
			aws.String("arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"),
		},
		VPCZoneIdentifier: aws.String("subnet-4176792c, subnet-65ea5f08"),
	}

	result, err := svc.CreateAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeAlreadyExistsFault:
				fmt.Println(autoscaling.ErrCodeAlreadyExistsFault, aerr.Error())
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To create a launch configuration
//
// This example creates a launch configuration.
func ExampleAutoScaling_CreateLaunchConfiguration_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.CreateLaunchConfigurationInput{
		IamInstanceProfile:      aws.String("my-iam-role"),
		ImageId:                 aws.String("ami-12345678"),
		InstanceType:            aws.String("m3.medium"),
		LaunchConfigurationName: aws.String("my-launch-config"),
		SecurityGroups: []*string{
			aws.String("sg-eb2af88e"),
		},
	}

	result, err := svc.CreateLaunchConfiguration(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeAlreadyExistsFault:
				fmt.Println(autoscaling.ErrCodeAlreadyExistsFault, aerr.Error())
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To create or update tags for an Auto Scaling group
//
// This example adds two tags to the specified Auto Scaling group.
func ExampleAutoScaling_CreateOrUpdateTags_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.CreateOrUpdateTagsInput{
		Tags: []*autoscaling.Tag{
			{
				Key:               aws.String("Role"),
				PropagateAtLaunch: aws.Bool(true),
				ResourceId:        aws.String("my-auto-scaling-group"),
				ResourceType:      aws.String("auto-scaling-group"),
				Value:             aws.String("WebServer"),
			},
			{
				Key:               aws.String("Dept"),
				PropagateAtLaunch: aws.Bool(true),
				ResourceId:        aws.String("my-auto-scaling-group"),
				ResourceType:      aws.String("auto-scaling-group"),
				Value:             aws.String("Research"),
			},
		},
	}

	result, err := svc.CreateOrUpdateTags(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeAlreadyExistsFault:
				fmt.Println(autoscaling.ErrCodeAlreadyExistsFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeResourceInUseFault:
				fmt.Println(autoscaling.ErrCodeResourceInUseFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete an Auto Scaling group
//
// This example deletes the specified Auto Scaling group.
func ExampleAutoScaling_DeleteAutoScalingGroup_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeleteAutoScalingGroupInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
	}

	result, err := svc.DeleteAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceInUseFault:
				fmt.Println(autoscaling.ErrCodeResourceInUseFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete an Auto Scaling group and all its instances
//
// This example deletes the specified Auto Scaling group and all its instances.
func ExampleAutoScaling_DeleteAutoScalingGroup_shared01() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeleteAutoScalingGroupInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		ForceDelete:          aws.Bool(true),
	}

	result, err := svc.DeleteAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceInUseFault:
				fmt.Println(autoscaling.ErrCodeResourceInUseFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete a launch configuration
//
// This example deletes the specified launch configuration.
func ExampleAutoScaling_DeleteLaunchConfiguration_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeleteLaunchConfigurationInput{
		LaunchConfigurationName: aws.String("my-launch-config"),
	}

	result, err := svc.DeleteLaunchConfiguration(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceInUseFault:
				fmt.Println(autoscaling.ErrCodeResourceInUseFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete a lifecycle hook
//
// This example deletes the specified lifecycle hook.
func ExampleAutoScaling_DeleteLifecycleHook_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeleteLifecycleHookInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		LifecycleHookName:    aws.String("my-lifecycle-hook"),
	}

	result, err := svc.DeleteLifecycleHook(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete an Auto Scaling notification
//
// This example deletes the specified notification from the specified Auto Scaling group.
func ExampleAutoScaling_DeleteNotificationConfiguration_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeleteNotificationConfigurationInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		TopicARN:             aws.String("arn:aws:sns:us-west-2:123456789012:my-sns-topic"),
	}

	result, err := svc.DeleteNotificationConfiguration(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete an Auto Scaling policy
//
// This example deletes the specified Auto Scaling policy.
func ExampleAutoScaling_DeletePolicy_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeletePolicyInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		PolicyName:           aws.String("ScaleIn"),
	}

	result, err := svc.DeletePolicy(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete a scheduled action from an Auto Scaling group
//
// This example deletes the specified scheduled action from the specified Auto Scaling
// group.
func ExampleAutoScaling_DeleteScheduledAction_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeleteScheduledActionInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		ScheduledActionName:  aws.String("my-scheduled-action"),
	}

	result, err := svc.DeleteScheduledAction(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To delete a tag from an Auto Scaling group
//
// This example deletes the specified tag from the specified Auto Scaling group.
func ExampleAutoScaling_DeleteTags_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DeleteTagsInput{
		Tags: []*autoscaling.Tag{
			{
				Key:          aws.String("Dept"),
				ResourceId:   aws.String("my-auto-scaling-group"),
				ResourceType: aws.String("auto-scaling-group"),
				Value:        aws.String("Research"),
			},
		},
	}

	result, err := svc.DeleteTags(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeResourceInUseFault:
				fmt.Println(autoscaling.ErrCodeResourceInUseFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe your Auto Scaling account limits
//
// This example describes the Auto Scaling limits for your AWS account.
func ExampleAutoScaling_DescribeAccountLimits_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeAccountLimitsInput{}

	result, err := svc.DescribeAccountLimits(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the Auto Scaling adjustment types
//
// This example describes the available adjustment types.
func ExampleAutoScaling_DescribeAdjustmentTypes_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeAdjustmentTypesInput{}

	result, err := svc.DescribeAdjustmentTypes(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe an Auto Scaling group
//
// This example describes the specified Auto Scaling group.
func ExampleAutoScaling_DescribeAutoScalingGroups_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeAutoScalingGroupsInput{
		AutoScalingGroupNames: []*string{
			aws.String("my-auto-scaling-group"),
		},
	}

	result, err := svc.DescribeAutoScalingGroups(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe one or more Auto Scaling instances
//
// This example describes the specified Auto Scaling instance.
func ExampleAutoScaling_DescribeAutoScalingInstances_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeAutoScalingInstancesInput{
		InstanceIds: []*string{
			aws.String("i-4ba0837f"),
		},
	}

	result, err := svc.DescribeAutoScalingInstances(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the Auto Scaling notification types
//
// This example describes the available notification types.
func ExampleAutoScaling_DescribeAutoScalingNotificationTypes_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeAutoScalingNotificationTypesInput{}

	result, err := svc.DescribeAutoScalingNotificationTypes(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe Auto Scaling launch configurations
//
// This example describes the specified launch configuration.
func ExampleAutoScaling_DescribeLaunchConfigurations_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeLaunchConfigurationsInput{
		LaunchConfigurationNames: []*string{
			aws.String("my-launch-config"),
		},
	}

	result, err := svc.DescribeLaunchConfigurations(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the available types of lifecycle hooks
//
// This example describes the available lifecycle hook types.
func ExampleAutoScaling_DescribeLifecycleHookTypes_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeLifecycleHookTypesInput{}

	result, err := svc.DescribeLifecycleHookTypes(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe your lifecycle hooks
//
// This example describes the lifecycle hooks for the specified Auto Scaling group.
func ExampleAutoScaling_DescribeLifecycleHooks_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeLifecycleHooksInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
	}

	result, err := svc.DescribeLifecycleHooks(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the target groups for an Auto Scaling group
//
// This example describes the target groups attached to the specified Auto Scaling group.
func ExampleAutoScaling_DescribeLoadBalancerTargetGroups_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeLoadBalancerTargetGroupsInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
	}

	result, err := svc.DescribeLoadBalancerTargetGroups(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the load balancers for an Auto Scaling group
//
// This example describes the load balancers attached to the specified Auto Scaling
// group.
func ExampleAutoScaling_DescribeLoadBalancers_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeLoadBalancersInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
	}

	result, err := svc.DescribeLoadBalancers(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the Auto Scaling metric collection types
//
// This example describes the available metric collection types.
func ExampleAutoScaling_DescribeMetricCollectionTypes_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeMetricCollectionTypesInput{}

	result, err := svc.DescribeMetricCollectionTypes(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe Auto Scaling notification configurations
//
// This example describes the notification configurations for the specified Auto Scaling
// group.
func ExampleAutoScaling_DescribeNotificationConfigurations_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeNotificationConfigurationsInput{
		AutoScalingGroupNames: []*string{
			aws.String("my-auto-scaling-group"),
		},
	}

	result, err := svc.DescribeNotificationConfigurations(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe Auto Scaling policies
//
// This example describes the policies for the specified Auto Scaling group.
func ExampleAutoScaling_DescribePolicies_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribePoliciesInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
	}

	result, err := svc.DescribePolicies(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the scaling activities for an Auto Scaling group
//
// This example describes the scaling activities for the specified Auto Scaling group.
func ExampleAutoScaling_DescribeScalingActivities_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeScalingActivitiesInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
	}

	result, err := svc.DescribeScalingActivities(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe the Auto Scaling process types
//
// This example describes the Auto Scaling process types.
func ExampleAutoScaling_DescribeScalingProcessTypes_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeScalingProcessTypesInput{}

	result, err := svc.DescribeScalingProcessTypes(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe scheduled actions
//
// This example describes the scheduled actions for the specified Auto Scaling group.
func ExampleAutoScaling_DescribeScheduledActions_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeScheduledActionsInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
	}

	result, err := svc.DescribeScheduledActions(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe tags
//
// This example describes the tags for the specified Auto Scaling group.
func ExampleAutoScaling_DescribeTags_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeTagsInput{
		Filters: []*autoscaling.Filter{
			{
				Name: aws.String("auto-scaling-group"),
				Values: []*string{
					aws.String("my-auto-scaling-group"),
				},
			},
		},
	}

	result, err := svc.DescribeTags(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeInvalidNextToken:
				fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To describe termination policy types
//
// This example describes the available termination policy types.
func ExampleAutoScaling_DescribeTerminationPolicyTypes_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DescribeTerminationPolicyTypesInput{}

	result, err := svc.DescribeTerminationPolicyTypes(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To detach an instance from an Auto Scaling group
//
// This example detaches the specified instance from the specified Auto Scaling group.
func ExampleAutoScaling_DetachInstances_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DetachInstancesInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		InstanceIds: []*string{
			aws.String("i-93633f9b"),
		},
		ShouldDecrementDesiredCapacity: aws.Bool(true),
	}

	result, err := svc.DetachInstances(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To detach a target group from an Auto Scaling group
//
// This example detaches the specified target group from the specified Auto Scaling
// group
func ExampleAutoScaling_DetachLoadBalancerTargetGroups_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DetachLoadBalancerTargetGroupsInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		TargetGroupARNs: []*string{
			aws.String("arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"),
		},
	}

	result, err := svc.DetachLoadBalancerTargetGroups(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To detach a load balancer from an Auto Scaling group
//
// This example detaches the specified load balancer from the specified Auto Scaling
// group.
func ExampleAutoScaling_DetachLoadBalancers_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DetachLoadBalancersInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		LoadBalancerNames: []*string{
			aws.String("my-load-balancer"),
		},
	}

	result, err := svc.DetachLoadBalancers(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To disable metrics collection for an Auto Scaling group
//
// This example disables collecting data for the GroupDesiredCapacity metric for the
// specified Auto Scaling group.
func ExampleAutoScaling_DisableMetricsCollection_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.DisableMetricsCollectionInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		Metrics: []*string{
			aws.String("GroupDesiredCapacity"),
		},
	}

	result, err := svc.DisableMetricsCollection(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To enable metrics collection for an Auto Scaling group
//
// This example enables data collection for the specified Auto Scaling group.
func ExampleAutoScaling_EnableMetricsCollection_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.EnableMetricsCollectionInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		Granularity:          aws.String("1Minute"),
	}

	result, err := svc.EnableMetricsCollection(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To move instances into standby mode
//
// This example puts the specified instance into standby mode.
func ExampleAutoScaling_EnterStandby_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.EnterStandbyInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		InstanceIds: []*string{
			aws.String("i-93633f9b"),
		},
		ShouldDecrementDesiredCapacity: aws.Bool(true),
	}

	result, err := svc.EnterStandby(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To execute an Auto Scaling policy
//
// This example executes the specified Auto Scaling policy for the specified Auto Scaling
// group.
func ExampleAutoScaling_ExecutePolicy_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.ExecutePolicyInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		HonorCooldown:        aws.Bool(true),
		PolicyName:           aws.String("ScaleIn"),
	}

	result, err := svc.ExecutePolicy(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To move instances out of standby mode
//
// This example moves the specified instance out of standby mode.
func ExampleAutoScaling_ExitStandby_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.ExitStandbyInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		InstanceIds: []*string{
			aws.String("i-93633f9b"),
		},
	}

	result, err := svc.ExitStandby(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To create a lifecycle hook
//
// This example creates a lifecycle hook.
func ExampleAutoScaling_PutLifecycleHook_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.PutLifecycleHookInput{
		AutoScalingGroupName:  aws.String("my-auto-scaling-group"),
		LifecycleHookName:     aws.String("my-lifecycle-hook"),
		LifecycleTransition:   aws.String("autoscaling:EC2_INSTANCE_LAUNCHING"),
		NotificationTargetARN: aws.String("arn:aws:sns:us-west-2:123456789012:my-sns-topic --role-arn"),
		RoleARN:               aws.String("arn:aws:iam::123456789012:role/my-auto-scaling-role"),
	}

	result, err := svc.PutLifecycleHook(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To add an Auto Scaling notification
//
// This example adds the specified notification to the specified Auto Scaling group.
func ExampleAutoScaling_PutNotificationConfiguration_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.PutNotificationConfigurationInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		NotificationTypes: []*string{
			aws.String("autoscaling:TEST_NOTIFICATION"),
		},
		TopicARN: aws.String("arn:aws:sns:us-west-2:123456789012:my-sns-topic"),
	}

	result, err := svc.PutNotificationConfiguration(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To add a scaling policy to an Auto Scaling group
//
// This example adds the specified policy to the specified Auto Scaling group.
func ExampleAutoScaling_PutScalingPolicy_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.PutScalingPolicyInput{
		AdjustmentType:       aws.String("ChangeInCapacity"),
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		PolicyName:           aws.String("ScaleIn"),
		ScalingAdjustment:    aws.Int64(-1),
	}

	result, err := svc.PutScalingPolicy(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To add a scheduled action to an Auto Scaling group
//
// This example adds the specified scheduled action to the specified Auto Scaling group.
func ExampleAutoScaling_PutScheduledUpdateGroupAction_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.PutScheduledUpdateGroupActionInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		DesiredCapacity:      aws.Int64(4),
		EndTime:              parseTime("2006-01-02T15:04:05Z", "2014-05-12T08:00:00Z"),
		MaxSize:              aws.Int64(6),
		MinSize:              aws.Int64(2),
		ScheduledActionName:  aws.String("my-scheduled-action"),
		StartTime:            parseTime("2006-01-02T15:04:05Z", "2014-05-12T08:00:00Z"),
	}

	result, err := svc.PutScheduledUpdateGroupAction(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeAlreadyExistsFault:
				fmt.Println(autoscaling.ErrCodeAlreadyExistsFault, aerr.Error())
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To record a lifecycle action heartbeat
//
// This example records a lifecycle action heartbeat to keep the instance in a pending
// state.
func ExampleAutoScaling_RecordLifecycleActionHeartbeat_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.RecordLifecycleActionHeartbeatInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		LifecycleActionToken: aws.String("bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635"),
		LifecycleHookName:    aws.String("my-lifecycle-hook"),
	}

	result, err := svc.RecordLifecycleActionHeartbeat(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To resume Auto Scaling processes
//
// This example resumes the specified suspended scaling process for the specified Auto
// Scaling group.
func ExampleAutoScaling_ResumeProcesses_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.ScalingProcessQuery{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		ScalingProcesses: []*string{
			aws.String("AlarmNotification"),
		},
	}

	result, err := svc.ResumeProcesses(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceInUseFault:
				fmt.Println(autoscaling.ErrCodeResourceInUseFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To set the desired capacity for an Auto Scaling group
//
// This example sets the desired capacity for the specified Auto Scaling group.
func ExampleAutoScaling_SetDesiredCapacity_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.SetDesiredCapacityInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		DesiredCapacity:      aws.Int64(2),
		HonorCooldown:        aws.Bool(true),
	}

	result, err := svc.SetDesiredCapacity(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To set the health status of an instance
//
// This example sets the health status of the specified instance to Unhealthy.
func ExampleAutoScaling_SetInstanceHealth_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.SetInstanceHealthInput{
		HealthStatus: aws.String("Unhealthy"),
		InstanceId:   aws.String("i-93633f9b"),
	}

	result, err := svc.SetInstanceHealth(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To enable instance protection for an instance
//
// This example enables instance protection for the specified instance.
func ExampleAutoScaling_SetInstanceProtection_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.SetInstanceProtectionInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		InstanceIds: []*string{
			aws.String("i-93633f9b"),
		},
		ProtectedFromScaleIn: aws.Bool(true),
	}

	result, err := svc.SetInstanceProtection(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To disable instance protection for an instance
//
// This example disables instance protection for the specified instance.
func ExampleAutoScaling_SetInstanceProtection_shared01() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.SetInstanceProtectionInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		InstanceIds: []*string{
			aws.String("i-93633f9b"),
		},
		ProtectedFromScaleIn: aws.Bool(false),
	}

	result, err := svc.SetInstanceProtection(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeLimitExceededFault:
				fmt.Println(autoscaling.ErrCodeLimitExceededFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To suspend Auto Scaling processes
//
// This example suspends the specified scaling process for the specified Auto Scaling
// group.
func ExampleAutoScaling_SuspendProcesses_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.ScalingProcessQuery{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		ScalingProcesses: []*string{
			aws.String("AlarmNotification"),
		},
	}

	result, err := svc.SuspendProcesses(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeResourceInUseFault:
				fmt.Println(autoscaling.ErrCodeResourceInUseFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To terminate an instance in an Auto Scaling group
//
// This example terminates the specified instance from the specified Auto Scaling group
// without updating the size of the group. Auto Scaling launches a replacement instance
// after the specified instance terminates.
func ExampleAutoScaling_TerminateInstanceInAutoScalingGroup_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.TerminateInstanceInAutoScalingGroupInput{
		InstanceId:                     aws.String("i-93633f9b"),
		ShouldDecrementDesiredCapacity: aws.Bool(false),
	}

	result, err := svc.TerminateInstanceInAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To update the launch configuration
//
// This example updates the launch configuration of the specified Auto Scaling group.
func ExampleAutoScaling_UpdateAutoScalingGroup_shared00() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.UpdateAutoScalingGroupInput{
		AutoScalingGroupName:    aws.String("my-auto-scaling-group"),
		LaunchConfigurationName: aws.String("new-launch-config"),
	}

	result, err := svc.UpdateAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To update the minimum and maximum size
//
// This example updates the minimum size and maximum size of the specified Auto Scaling
// group.
func ExampleAutoScaling_UpdateAutoScalingGroup_shared01() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.UpdateAutoScalingGroupInput{
		AutoScalingGroupName: aws.String("my-auto-scaling-group"),
		MaxSize:              aws.Int64(3),
		MinSize:              aws.Int64(1),
	}

	result, err := svc.UpdateAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}

// To enable instance protection
//
// This example enables instance protection for the specified Auto Scaling group.
func ExampleAutoScaling_UpdateAutoScalingGroup_shared02() {
	svc := autoscaling.New(session.New())
	input := &autoscaling.UpdateAutoScalingGroupInput{
		AutoScalingGroupName:             aws.String("my-auto-scaling-group"),
		NewInstancesProtectedFromScaleIn: aws.Bool(true),
	}

	result, err := svc.UpdateAutoScalingGroup(input)
	if err != nil {
		if aerr, ok := err.(awserr.Error); ok {
			switch aerr.Code() {
			case autoscaling.ErrCodeScalingActivityInProgressFault:
				fmt.Println(autoscaling.ErrCodeScalingActivityInProgressFault, aerr.Error())
			case autoscaling.ErrCodeResourceContentionFault:
				fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())
			case autoscaling.ErrCodeServiceLinkedRoleFailure:
				fmt.Println(autoscaling.ErrCodeServiceLinkedRoleFailure, aerr.Error())
			default:
				fmt.Println(aerr.Error())
			}
		} else {
			// Print the error, cast err to awserr.Error to get the Code and
			// Message from an error.
			fmt.Println(err.Error())
		}
		return
	}

	fmt.Println(result)
}
