VolumeProps

class aws_cdk.aws_ec2.VolumeProps(*, availability_zone, auto_enable_io=None, enable_multi_attach=None, encrypted=None, encryption_key=None, iops=None, removal_policy=None, size=None, snapshot_id=None, volume_name=None, volume_type=None)

Bases: object

Properties of an EBS Volume.

Parameters:
  • availability_zone (str) – The Availability Zone in which to create the volume.

  • auto_enable_io (Optional[bool]) – 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. Default: false

  • enable_multi_attach (Optional[bool]) – Indicates whether Amazon EBS Multi-Attach is enabled. See {@link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html#considerations|Considerations and limitations} for the constraints of multi-attach. Default: false

  • encrypted (Optional[bool]) – 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 {@link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default|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 {@link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances|Supported Instance Types.} Default: false

  • encryption_key (Optional[IKey]) – The customer-managed encryption key that is used to encrypt the Volume. The encrypted property must be true if this is provided. Note: If using an {@link aws-kms.IKey} created from a {@link 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) } } } Default: The default KMS key for the account, region, and EC2 service is used.

  • iops (Union[int, float, None]) – The number of I/O operations per second (IOPS) to provision for the volume. 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 {@link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html} for more information. This parameter is valid only for PROVISIONED_IOPS_SSD, PROVISIONED_IOPS_SSD_IO2 and GENERAL_PURPOSE_SSD_GP3 volumes. Default: None – Required for io1 and io2 volumes. The default for gp3 volumes is 3,000 IOPS if omitted.

  • removal_policy (Optional[RemovalPolicy]) – Policy to apply when the volume is removed from the stack. Default: RemovalPolicy.RETAIN

  • size (Optional[Size]) – The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. See {@link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html} for details on the allowable size for each type of volume. Default: If you’re creating the volume from a snapshot and don’t specify a volume size, the default is the snapshot size.

  • snapshot_id (Optional[str]) – The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size. Default: The EBS volume is not created from a snapshot.

  • volume_name (Optional[str]) – The value of the physicalName property of this resource. Default: The physical name will be allocated by CloudFormation at deployment time

  • volume_type (Optional[EbsDeviceVolumeType]) – The type of the volume; what type of storage to use to form the EBS Volume. Default: {@link EbsDeviceVolumeType.GENERAL_PURPOSE_SSD}

ExampleMetadata:

infused

Example:

# instance: ec2.Instance
# role: iam.Role


volume = ec2.Volume(self, "Volume",
    availability_zone="us-west-2a",
    size=Size.gibibytes(500),
    encrypted=True
)

volume.grant_attach_volume(role, [instance])

Attributes

auto_enable_io

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.

Default:

false

availability_zone

The Availability Zone in which to create the volume.

enable_multi_attach

Indicates whether Amazon EBS Multi-Attach is enabled.

See {@link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html#considerations|Considerations and limitations} for the constraints of multi-attach.

Default:

false

encrypted

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 {@link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default|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 {@link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances|Supported Instance Types.}

Default:

false

encryption_key

The customer-managed encryption key that is used to encrypt the Volume.

The encrypted property must be true if this is provided.

Note: If using an {@link aws-kms.IKey} created from a {@link 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)
    }
  }
}
Default:

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

iops

The number of I/O operations per second (IOPS) to provision for the volume.

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 {@link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html} for more information.

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

Default:

None – Required for io1 and io2 volumes. The default for gp3 volumes is 3,000 IOPS if omitted.

removal_policy

Policy to apply when the volume is removed from the stack.

Default:

RemovalPolicy.RETAIN

size

The size of the volume, in GiBs.

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

Default:

If you’re creating the volume from a snapshot and don’t specify a volume size, the default is the snapshot size.

snapshot_id

The snapshot from which to create the volume.

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

Default:

The EBS volume is not created from a snapshot.

volume_name

The value of the physicalName property of this resource.

Default:

The physical name will be allocated by CloudFormation at deployment time

volume_type

The type of the volume;

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

Default:

{@link EbsDeviceVolumeType.GENERAL_PURPOSE_SSD}