func()

in pkg/ec2helper/ec2helper.go [38:80]


func (h EC2Helper) GetInstanceIdsByTagKey(tag string) ([]string, error) {
	ids := []string{}
	var nextToken string

	for {
		result, err := h.ec2ServiceClient.DescribeInstances(&ec2.DescribeInstancesInput{
			Filters: []*ec2.Filter{
				{
					Name:   aws.String("tag-key"),
					Values: []*string{aws.String(tag)},
				},
			},
			NextToken: &nextToken,
		})

		if err != nil {
			return nil, err
		}

		if result == nil || result.Reservations == nil {
			return nil, fmt.Errorf("describe instances success but return empty response for tag key: %s", tag)
		}

		for _, reservation := range result.Reservations {
			if reservation.Instances == nil {
				continue
			}
			for _, instance := range reservation.Instances {
				if instance == nil || instance.InstanceId == nil {
					continue
				}
				ids = append(ids, *instance.InstanceId)
			}
		}

		if result.NextToken == nil {
			break
		}
		nextToken = *result.NextToken
	}

	return ids, nil
}