in internal/pkg/cli/task_run.go [192:263]
func newTaskRunOpts(vars runTaskVars) (*runTaskOpts, error) {
sessProvider := sessions.ImmutableProvider(sessions.UserAgentExtras("task run"))
defaultSess, err := sessProvider.Default()
if err != nil {
return nil, fmt.Errorf("default session: %v", err)
}
prompter := prompt.New()
store := config.NewSSMStore(identity.New(defaultSess), ssm.New(defaultSess), aws.StringValue(defaultSess.Config.Region))
opts := runTaskOpts{
runTaskVars: vars,
fs: &afero.Afero{Fs: afero.NewOsFs()},
store: store,
prompt: prompter,
sel: selector.NewAppEnvSelector(prompter, store),
spinner: termprogress.NewSpinner(log.DiagnosticWriter),
provider: sessProvider,
secretsManagerSecrets: make(map[string]string),
ssmParamSecrets: make(map[string]string),
}
opts.configureRuntimeOpts = func() error {
opts.runner, err = opts.configureRunner()
if err != nil {
return fmt.Errorf("configure task runner: %w", err)
}
opts.deployer = cloudformation.New(opts.sess, cloudformation.WithProgressTracker(os.Stderr))
opts.defaultClusterGetter = awsecs.New(opts.sess)
opts.publicIPGetter = ec2.New(opts.sess)
return nil
}
opts.configureRepository = func() error {
repoName := fmt.Sprintf(deploy.FmtTaskECRRepoName, opts.groupName)
opts.repository = repository.New(ecr.New(opts.sess), repoName)
return nil
}
opts.configureEventsWriter = func(tasks []*task.Task) {
opts.eventsWriter = logging.NewTaskClient(opts.sess, opts.groupName, tasks)
}
opts.configureECSServiceDescriber = func(session *session.Session) ecs.ECSServiceDescriber {
return awsecs.New(session)
}
opts.configureServiceDescriber = func(session *session.Session) ecs.ServiceDescriber {
return ecs.New(session)
}
opts.configureJobDescriber = func(session *session.Session) ecs.JobDescriber {
return ecs.New(session)
}
opts.configureUploader = func(session *session.Session) uploader {
return s3.New(session)
}
opts.envCompatibilityChecker = func(app, env string) (versionCompatibilityChecker, error) {
envDescriber, err := describe.NewEnvDescriber(describe.NewEnvDescriberConfig{
App: app,
Env: env,
ConfigStore: opts.store,
})
if err != nil {
return nil, fmt.Errorf("new environment compatibility checker: %v", err)
}
return envDescriber, nil
}
opts.runTaskRequestFromECSService = ecs.RunTaskRequestFromECSService
opts.runTaskRequestFromService = ecs.RunTaskRequestFromService
opts.runTaskRequestFromJob = ecs.RunTaskRequestFromJob
return &opts, nil
}