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
}