func()

in internal/pkg/deploy/cloudformation/stack/scheduled_job.go [136:214]


func (j *ScheduledJob) Template() (string, error) {
	addonsParams, err := j.addonsParameters()
	if err != nil {
		return "", err
	}
	addonsOutputs, err := j.addonsOutputs()
	if err != nil {
		return "", err
	}
	exposedPorts, err := j.manifest.ExposedPorts()
	if err != nil {
		return "", fmt.Errorf("parse exposed ports in service manifest %s: %w", j.name, err)
	}
	sidecars, err := convertSidecars(j.manifest.Sidecars, exposedPorts.PortsForContainer, j.rc)
	if err != nil {
		return "", fmt.Errorf("convert the sidecar configuration for job %s: %w", j.name, err)
	}
	publishers, err := convertPublish(j.manifest.Publish(), j.rc.AccountID, j.rc.Region, j.app, j.env, j.name)
	if err != nil {
		return "", fmt.Errorf(`convert "publish" field for job %s: %w`, j.name, err)
	}
	schedule, err := j.awsSchedule()
	if err != nil {
		return "", fmt.Errorf("convert schedule for job %s: %w", j.name, err)
	}
	stateMachine, err := j.stateMachineOpts()
	if err != nil {
		return "", fmt.Errorf("convert retry/timeout config for job %s: %w", j.name, err)
	}
	crs, err := convertCustomResources(j.rc.CustomResourcesURL)
	if err != nil {
		return "", err
	}
	entrypoint, err := convertEntryPoint(j.manifest.EntryPoint)
	if err != nil {
		return "", err
	}
	command, err := convertCommand(j.manifest.Command)
	if err != nil {
		return "", err
	}

	content, err := j.parser.ParseScheduledJob(template.WorkloadOpts{
		SerializedManifest:       string(j.rawManifest),
		Variables:                convertEnvVars(j.manifest.Variables),
		Secrets:                  convertSecrets(j.manifest.Secrets),
		WorkloadType:             manifestinfo.ScheduledJobType,
		NestedStack:              addonsOutputs,
		AddonsExtraParams:        addonsParams,
		Sidecars:                 sidecars,
		ScheduleExpression:       schedule,
		StateMachine:             stateMachine,
		HealthCheck:              convertContainerHealthCheck(j.manifest.ImageConfig.HealthCheck),
		LogConfig:                convertLogging(j.manifest.Logging),
		DockerLabels:             j.manifest.ImageConfig.Image.DockerLabels,
		Storage:                  convertStorageOpts(j.manifest.Name, j.manifest.Storage),
		Network:                  convertNetworkConfig(j.manifest.Network),
		EntryPoint:               entrypoint,
		Command:                  command,
		DependsOn:                convertDependsOn(j.manifest.ImageConfig.Image.DependsOn),
		CredentialsParameter:     aws.StringValue(j.manifest.ImageConfig.Image.Credentials),
		ServiceDiscoveryEndpoint: j.rc.ServiceDiscoveryEndpoint,
		Publish:                  publishers,
		Platform:                 convertPlatform(j.manifest.Platform),
		EnvVersion:               j.rc.EnvVersion,
		Version:                  j.rc.Version,

		CustomResources:     crs,
		PermissionsBoundary: j.permBound,
	})
	if err != nil {
		return "", fmt.Errorf("parse scheduled job template: %w", err)
	}
	overriddenTpl, err := j.taskDefOverrideFunc(convertTaskDefOverrideRules(j.manifest.TaskDefOverrides), content.Bytes())
	if err != nil {
		return "", fmt.Errorf("apply task definition overrides: %w", err)
	}
	return string(overriddenTpl), nil
}