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
}