`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 availability zones in a region for data processing or CMS workloads. For more detail, see the [storage](../developing/storage.en.md) page. You can also specify extensible ephemeral storage at the task level.
storage.`ephemeral` Int
Specify how much ephemeral task storage to provision in GiB. The default value and minimum is 20 GiB. The maximum size is 200 GiB. Sizes above 20 GiB incur additional charges.
To create a shared filesystem context between an essential container and a sidecar, you can use an empty volume:
```yaml
storage:
ephemeral: 100
volumes:
scratch:
path: /var/data
read_only: false
sidecars:
mySidecar:
image: public.ecr.aws/my-image:latest
mount_points:
- source_volume: scratch
path: /var/data
read_only: false
```
This example will provision 100 GiB of storage to be shared between the sidecar and the task container. This can be useful for large datasets, or for using a sidecar to transfer data from EFS into task storage for workloads with high disk I/O requirements.
storage.`readonly_fs` Boolean
Specify true to give your container read-only access to its root file system.
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` Boolean or Map
Specify more detailed EFS configuration. If specified as a boolean, or using only the `uid` and `gid` subfields, creates a managed EFS filesystem and dedicated Access Point for this workload.
```yaml
// Simple managed EFS
efs: true
// Managed EFS with custom POSIX info
efs:
uid: 10000
gid: 110000
```
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.`uid` Uint32
Optional. Must be specified with `gid`. Mutually exclusive with `root_dir`, `auth`, and `id`. The POSIX UID to use for the dedicated access point created for the managed EFS filesystem.
storage.volumes.``.efs.`gid` Uint32
Optional. Must be specified with `uid`. Mutually exclusive with `root_dir`, `auth`, and `id`. The POSIX GID to use for the dedicated access point created for the managed EFS filesystem.
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`.