in internal/deployers/eksapi/infra.go [399:426]
func (m *InfrastructureManager) getRankedAZsForInstanceTypes(opts *deployerOptions) ([]string, error) {
offerings, err := m.clients.EC2().DescribeInstanceTypeOfferings(context.TODO(), &ec2.DescribeInstanceTypeOfferingsInput{
LocationType: ec2types.LocationTypeAvailabilityZone,
Filters: []ec2types.Filter{
{
Name: aws.String("instance-type"),
Values: opts.InstanceTypes,
},
},
})
if err != nil {
return nil, fmt.Errorf("failed to describe instance type offerings: %v", err)
}
counts := make(map[string]int)
for _, offering := range offerings.InstanceTypeOfferings {
az := aws.ToString(offering.Location)
count := counts[az]
counts[az] = count + 1
}
var azs []string
for az := range counts {
azs = append(azs, az)
}
sort.Slice(azs, func(i, j int) bool {
return counts[azs[i]] > counts[azs[j]]
})
return azs, nil
}