当前位置: 首页>>代码示例>>Golang>>正文


Golang AutoScaling.DescribeAutoScalingGroups方法代码示例

本文整理汇总了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
}
开发者ID:jkinred,项目名称:terraform,代码行数:28,代码来源:resource_aws_autoscaling_group.go

示例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
}
开发者ID:savaki,项目名称:deploytool,代码行数:56,代码来源:asg.go

示例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
}
开发者ID:savaki,项目名称:deploytool,代码行数:23,代码来源:asg.go


注:本文中的github.com/aws/aws-sdk-go/service/autoscaling.AutoScaling.DescribeAutoScalingGroups方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。