in pkg/selector/selector.go [108:131]
func NewWithCache(ctx context.Context, cfg aws.Config, ttl time.Duration, cacheDir string) (*Selector, error) {
serviceRegistry := NewRegistry()
serviceRegistry.RegisterAWSServices()
ec2Client := ec2.NewFromConfig(cfg, func(options *ec2.Options) {
options.APIOptions = append(options.APIOptions, middleware.AddUserAgentKeyValue(sdkName, versionID))
})
pricingClient, err := ec2pricing.NewWithCache(ctx, cfg, ttl, cacheDir)
if err != nil {
return nil, err
}
instanceTypeProvider, err := instancetypes.LoadFromOrNew(cacheDir, cfg.Region, ttl, ec2Client)
if err != nil {
return nil, fmt.Errorf("unable to initialize instance type provider: %w", err)
}
return &Selector{
EC2: ec2Client,
EC2Pricing: pricingClient,
InstanceTypesProvider: instanceTypeProvider,
ServiceRegistry: serviceRegistry,
Logger: log.New(io.Discard, "", 0),
}, nil
}