本文整理匯總了Golang中github.com/aws/aws-sdk-go/service/autoscaling.AutoScaling.DescribeAutoScalingGroups方法的典型用法代碼示例。如果您正苦於以下問題:Golang AutoScaling.DescribeAutoScalingGroups方法的具體用法?Golang AutoScaling.DescribeAutoScalingGroups怎麽用?Golang AutoScaling.DescribeAutoScalingGroups使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/aws/aws-sdk-go/service/autoscaling.AutoScaling
的用法示例。
在下文中一共展示了AutoScaling.DescribeAutoScalingGroups方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: getAwsAutoscalingGroup
func getAwsAutoscalingGroup(
asgName string,
conn *autoscaling.AutoScaling) (*autoscaling.Group, error) {
describeOpts := autoscaling.DescribeAutoScalingGroupsInput{
AutoScalingGroupNames: []*string{aws.String(asgName)},
}
log.Printf("[DEBUG] AutoScaling Group describe configuration: %#v", describeOpts)
describeGroups, err := conn.DescribeAutoScalingGroups(&describeOpts)
if err != nil {
autoscalingerr, ok := err.(awserr.Error)
if ok && autoscalingerr.Code() == "InvalidGroup.NotFound" {
return nil, nil
}
return nil, fmt.Errorf("Error retrieving AutoScaling groups: %s", err)
}
// Search for the autoscaling group
for idx, asc := range describeGroups.AutoScalingGroups {
if *asc.AutoScalingGroupName == asgName {
return describeGroups.AutoScalingGroups[idx], nil
}
}
return nil, nil
}
示例2: terminateASG
func terminateASG(api *autoscaling.AutoScaling, instance *autoscaling.Group, wg *sync.WaitGroup) error {
defer wg.Done()
// 1. set the number of instances to 0
_, err := api.UpdateAutoScalingGroup(&autoscaling.UpdateAutoScalingGroupInput{
AutoScalingGroupName: instance.AutoScalingGroupName,
DesiredCapacity: aws.Int64(0),
MaxSize: aws.Int64(0),
MinSize: aws.Int64(0),
})
if err != nil {
return err
}
// 2. wait until the instance count is 0
for {
instances, err := api.DescribeAutoScalingGroups(&autoscaling.DescribeAutoScalingGroupsInput{
AutoScalingGroupNames: []*string{instance.AutoScalingGroupName},
})
if err != nil {
return err
}
// instance already deleted? we're done
if len(instances.AutoScalingGroups) == 0 {
return nil
}
// no instances remaining in asg? break
if v := instances.AutoScalingGroups[0]; len(v.Instances) == 0 {
break
}
time.Sleep(15 * time.Second)
}
// 3. terminate the asg
log.Printf("deleting autoscaling group, %s\n", *instance.AutoScalingGroupName)
_, err = api.DeleteAutoScalingGroup(&autoscaling.DeleteAutoScalingGroupInput{
AutoScalingGroupName: instance.AutoScalingGroupName,
ForceDelete: aws.Bool(true),
})
if err != nil {
return err
}
log.Printf("deleting launch configuration, %s\n", *instance.LaunchConfigurationName)
_, err = api.DeleteLaunchConfiguration(&autoscaling.DeleteLaunchConfigurationInput{
LaunchConfigurationName: instance.LaunchConfigurationName,
})
if err != nil {
return err
}
return nil
}
示例3: findASGInstancesToTerminate
func findASGInstancesToTerminate(api *autoscaling.AutoScaling, opts Options) ([]*autoscaling.Group, error) {
groups, err := api.DescribeAutoScalingGroups(&autoscaling.DescribeAutoScalingGroupsInput{})
if err != nil {
return nil, err
}
instances := []*autoscaling.Group{}
for _, asg := range groups.AutoScalingGroups {
if !hasASGTags(asg, "app", opts.App) {
continue
}
if !hasASGTags(asg, "env", opts.Env) {
continue
}
if hasASGTags(asg, "version", opts.Exclude) {
continue
}
instances = append(instances, asg)
}
return instances, nil
}