List of all available properties for a `'Scheduled Job'` manifest. To learn about Copilot jobs, see the [Jobs](../concepts/jobs.en.md) concept page. ???+ note "Sample scheduled job manifest" ```yaml name: report-generator type: Scheduled Job on: schedule: "@daily" cpu: 256 memory: 512 retries: 3 timeout: 1h image: build: ./Dockerfile variables: LOG_LEVEL: info env_file: log.env secrets: GITHUB_TOKEN: GITHUB_TOKEN # You can override any of the values defined above by environment. environments: prod: cpu: 2048 memory: 4096 ``` `name` String The name of your job.
`type` String The architecture type for your job. Currently, Copilot only supports the "Scheduled Job" type for tasks that are triggered either on a fixed schedule or periodically.
`on` Map The configuration for the event that triggers your job. on.`schedule` String You can specify a rate to periodically trigger your job. Supported rates: | Rate | Identical to | In human-readable text and `UTC`, it runs ... | | ------------ | --------------------- | --------------------------------------------- | | `"@yearly"` | `"cron(0 * * * ? *)"` | at midnight on January 1st | | `"@monthly"` | `"cron(0 0 1 * ? *)"` | at midnight on the first day of the month | | `"@weekly"` | `"cron(0 0 ? * 1 *)"` | at midnight on Sunday | | `"@daily"` | `"cron(0 0 * * ? *)"` | at midnight | | `"@hourly"` | `"cron(0 * * * ? *)"` | at minute 0 | * `"@every {duration}"` (For example, "1m", "5m") * `"rate({duration})"` based on CloudWatch's [rate expressions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#RateExpressions) Alternatively, you can specify a cron schedule if you'd like to trigger the job at a specific time: * `"* * * * *"` based on the standard [cron format](https://en.wikipedia.org/wiki/Cron#Overview). * `"cron({fields})"` based on CloudWatch's [cron expressions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) with six fields. Finally, you can disable the job from triggering by setting the `schedule` field to `none`: ```yaml on: schedule: "none" ```
{% include 'image.md' %} {% include 'image-config.en.md' %}
`entrypoint` String or Array of Strings Override the default entrypoint in the image. ```yaml # String version. entrypoint: "/bin/entrypoint --p1 --p2" # Alteratively, as an array of strings. entrypoint: ["/bin/entrypoint", "--p1", "--p2"] ```
`command` String or Array of Strings Override the default command in the image. ```yaml # String version. command: ps au # Alteratively, as an array of strings. command: ["ps", "au"] ```
`cpu` Integer Number of CPU units for the task. See the [Amazon ECS docs](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html) for valid CPU values.
`memory` Integer Amount of memory in MiB used by the task. See the [Amazon ECS docs](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html) for valid memory values.
`platform` String Operating system and architecture (formatted as `[os]/[arch]`) to pass with `docker build --platform`. For example, `linux/arm64` or `windows/x86_64`. The default is `linux/x86_64`. Override the generated string to build with a different valid `osfamily` or `architecture`. For example, Windows users might change the string ```yaml platform: windows/x86_64 ``` which defaults to `WINDOWS_SERVER_2019_CORE`, using a map: ```yaml platform: osfamily: windows_server_2019_full architecture: x86_64 ``` ```yaml platform: osfamily: windows_server_2019_core architecture: x86_64 ``` ```yaml platform: osfamily: windows_server_2022_core architecture: x86_64 ``` ```yaml platform: osfamily: windows_server_2022_full architecture: x86_64 ```
`retries` Integer The number of times to retry the job before failing.
`timeout` Duration How long the job should run before it aborts and fails. You can use the units: `h`, `m`, or `s`.
`network` Map The `network` section contains parameters for connecting to AWS resources in a VPC. network.`vpc` Map Subnets and security groups attached to your tasks. network.vpc.`placement` String Must be one of `'public'` or `'private'`. Defaults to launching your tasks in public subnets. !!! info If you launch tasks in `'private'` subnets and use a Copilot-generated VPC, Copilot will automatically add NAT Gateways to your environment for internet connectivity. (See [pricing](https://aws.amazon.com/vpc/pricing/).) Alternatively, when running `copilot env init`, you can import an existing VPC with NAT Gateways, or one with VPC endpoints for isolated workloads. See our [custom environment resources](../developing/custom-environment-resources.en.md) page for more. network.vpc.`security_groups` Array of Strings Additional security group IDs associated with your tasks. Copilot always includes a security group so containers within your environment can communicate with each other.
`variables` Map Key-value pairs that represent environment variables that will be passed to your job. Copilot will include a number of environment variables by default for you.
`secrets` Map Key-value pairs that represent secret values from [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) that will be securely passed to your job as environment variables.
`storage` Map The Storage section lets you specify external EFS volumes for your containers and sidecars to mount. This allows you to access persistent storage across regions for data processing or CMS workloads. For more detail, see the [storage](../developing/storage.en.md) page. storage.`volumes` Map Specify the name and configuration of any EFS volumes you would like to attach. The `volumes` field is specified as a map of the form: ```yaml volumes: : path: "/etc/mountpath" efs: ... ``` storage.volumes.`` Map Specify the configuration of a volume. storage.volumes.``.`path` String Required. Specify the location in the container where you would like your volume to be mounted. Must be fewer than 242 characters and must consist only of the characters `a-zA-Z0-9.-_/`. storage.volumes.``.`read_only` Boolean Optional. Defaults to `true`. Defines whether the volume is read-only or not. If false, the container is granted `elasticfilesystem:ClientWrite` permissions to the filesystem and the volume is writable. storage.volumes.``.`efs` Map Specify more detailed EFS configuration. storage.volumes.``.efs.`id` String Required. The ID of the filesystem you would like to mount. storage.volumes.``.efs.`root_dir` String Optional. Defaults to `/`. Specify the location in the EFS filesystem you would like to use as the root of your volume. Must be fewer than 255 characters and must consist only of the characters `a-zA-Z0-9.-_/`. If using an access point, `root_dir` must be either empty or `/` and `auth.iam` must be `true`. storage.volumes.``.efs.`auth` Map Specify advanced authorization configuration for EFS. storage.volumes.``.efs.auth.`iam` Boolean Optional. Defaults to `true`. Whether or not to use IAM authorization to determine whether the volume is allowed to connect to EFS. storage.volumes.``.efs.auth.`access_point_id` String Optional. Defaults to `""`. The ID of the EFS access point to connect to. If using an access point, `root_dir` must be either empty or `/` and `auth.iam` must be `true`.
`logging` Map The logging section contains log configuration parameters for your container's [FireLens](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) log driver (see examples [here](../developing/sidecars.en.md#sidecar-patterns)). logging.`image` Map Optional. The Fluent Bit image to use. Defaults to `public.ecr.aws/aws-observability/aws-for-fluent-bit:stable`. logging.`destination` Map Optional. The configuration options to send to the FireLens log driver. logging.`enableMetadata` Map Optional. Whether to include ECS metadata in logs. Defaults to `true`. logging.`secretOptions` Map Optional. The secrets to pass to the log configuration. logging.`configFilePath` Map Optional. The full config file path in your custom Fluent Bit image. {% include 'publish.en.md' %}
`environments` Map The environment section lets you override any value in your manifest based on the environment you're in. In the example manifest above, we're overriding the CPU parameter so that our production container is more performant.