# VolumeProps

Properties of an EBS Volume.

Extends: VolumeProps
Used as props by: Volume

- Source: [`aws-ec2/lib/volume.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-ec2/lib/volume.ts#L380)
- Type last changed: v2.201.0 · 13 Jun 2025

## Example

```ts
new ec2.Volume(this, 'Volume', {
  availabilityZone: 'us-east-1a',
  size: Size.gibibytes(125),
  volumeType: ec2.EbsDeviceVolumeType.GP3,
  throughput: 125,
});
```

## Properties

- `autoEnableIo`: boolean = false — Indicates whether the volume is auto-enabled for I/O operations.

  By default, Amazon EBS disables I/O to the volume from attached EC2
  instances when it determines that a volume's data is potentially inconsistent. If the consistency of the volume is not a concern, and
  you prefer that the volume be made available immediately if it's impaired, you can configure the volume to automatically enable I/O.

- `availabilityZone`: string (required) — The Availability Zone in which to create the volume.

- `enableMultiAttach`: boolean = false — Indicates whether Amazon EBS Multi-Attach is enabled.

  See [Considerations and limitations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html#considerations)
  for the constraints of multi-attach.

- `encrypted`: boolean = false — Specifies whether the volume should be encrypted.

  The effect of setting the encryption state to true depends on the volume origin
  (new or from a snapshot), starting encryption state, ownership, and whether encryption by default is enabled. For more information,
  see [Encryption by Default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)
  in the Amazon Elastic Compute Cloud User Guide.

  Encrypted Amazon EBS volumes must be attached to instances that support Amazon EBS encryption. For more information, see
  [Supported Instance Types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances).

- `encryptionKey`: [IKey](/cdk/api/v2/docs/aws-cdk-lib.aws_kms.IKey.html) — The customer-managed encryption key that is used to encrypt the Volume.

  **Default:** The default KMS key for the account, region, and EC2 service is used.

  The encrypted property must
  be true if this is provided.

  Note: If using an `aws-kms.IKey` created from a `aws-kms.Key.fromKeyArn()` here,
  then the KMS key **must** have the following in its Key policy; otherwise, the Volume
  will fail to create.

      {
        "Effect": "Allow",
        "Principal": { "AWS": "<arn for your account-user> ex: arn:aws:iam::00000000000:root" },
        "Resource": "*",
        "Action": [
          "kms:DescribeKey",
          "kms:GenerateDataKeyWithoutPlainText",
        ],
        "Condition": {
          "StringEquals": {
            "kms:ViaService": "ec2.<Region>.amazonaws.com", (eg: ec2.us-east-1.amazonaws.com)
            "kms:CallerAccount": "0000000000" (your account ID)
          }
        }
      }

- `iops`: number — The number of I/O operations per second (IOPS) to provision for the volume.

  **Default:** None -- Required for io1 and io2 volumes. The default for gp3 volumes is 3,000 IOPS if omitted.

  The maximum ratio is 50 IOPS/GiB for PROVISIONED_IOPS_SSD,
  and 500 IOPS/GiB for both PROVISIONED_IOPS_SSD_IO2 and GENERAL_PURPOSE_SSD_GP3.
  See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-volume.html
  for more information.

  This parameter is valid only for PROVISIONED_IOPS_SSD, PROVISIONED_IOPS_SSD_IO2 and GENERAL_PURPOSE_SSD_GP3 volumes.

- `removalPolicy`: [RemovalPolicy](/cdk/api/v2/docs/aws-cdk-lib.RemovalPolicy.html) = RemovalPolicy.RETAIN — Policy to apply when the volume is removed from the stack.

- `size`: [Size](/cdk/api/v2/docs/aws-cdk-lib.Size.html) — The size of the volume, in GiBs.

  **Default:** If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.

  You must specify either a snapshot ID or a volume size.
  See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-volume.html
  for details on the allowable size for each type of volume.

- `snapshotId`: string — The snapshot from which to create the volume.

  **Default:** The EBS volume is not created from a snapshot.

  You must specify either a snapshot ID or a volume size.

- `throughput`: number — The throughput that the volume supports, in MiB/s Takes a minimum of 125 and maximum of 2000.

  **Default:** 125 MiB/s. Only valid on gp3 volumes.

- `volumeInitializationRate`: [Size](/cdk/api/v2/docs/aws-cdk-lib.Size.html) — Specifies the Amazon EBS Provisioned Rate for Volume Initialization (volume initialization rate), at which to download the snapshot blocks from Amazon S3 to the volume.

  **Default:** undefined - The volume initialization rate is not set.

  Valid range is between 100 and 300 MiB/s.

  This parameter is supported only for volumes created from snapshots.

- `volumeName`: string — The value of the physicalName property of this resource.

  **Default:** The physical name will be allocated by CloudFormation at deployment time

- `volumeType`: [EbsDeviceVolumeType](/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.EbsDeviceVolumeType.html) — The type of the volume;

  **Default:** `EbsDeviceVolumeType.GENERAL_PURPOSE_SSD`

  what type of storage to use to form the EBS Volume.
