func NewWithCache()

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
}