Class VolumeProps
Properties of an EBS Volume.
Inheritance
Implements
Namespace: Amazon.CDK.AWS.EC2
Assembly: Amazon.CDK.AWS.EC2.dll
Syntax (csharp)
public class VolumeProps : Object, IVolumeProps
Syntax (vb)
Public Class VolumeProps
Inherits Object
Implements IVolumeProps
Remarks
ExampleMetadata: infused
Examples
Instance instance;
Role role;
var volume = new Volume(this, "Volume", new VolumeProps {
AvailabilityZone = "us-west-2a",
Size = Size.Gibibytes(500),
Encrypted = true
});
volume.GrantAttachVolume(role, new [] { instance });
Synopsis
Constructors
VolumeProps() |
Properties
AutoEnableIo | Indicates whether the volume is auto-enabled for I/O operations. |
AvailabilityZone | The Availability Zone in which to create the volume. |
EnableMultiAttach | Indicates whether Amazon EBS Multi-Attach is enabled. |
Encrypted | Specifies whether the volume should be encrypted. |
EncryptionKey | The customer-managed encryption key that is used to encrypt the Volume. |
Iops | The number of I/O operations per second (IOPS) to provision for the volume. |
RemovalPolicy | Policy to apply when the volume is removed from the stack. |
Size | The size of the volume, in GiBs. |
SnapshotId | The snapshot from which to create the volume. |
VolumeName | The value of the physicalName property of this resource. |
VolumeType | The type of the volume; |
Constructors
VolumeProps()
public VolumeProps()
Properties
AutoEnableIo
Indicates whether the volume is auto-enabled for I/O operations.
public Nullable<bool> AutoEnableIo { get; set; }
Property Value
System.Nullable<System.Boolean>
Remarks
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
AvailabilityZone
The Availability Zone in which to create the volume.
public string AvailabilityZone { get; set; }
Property Value
System.String
EnableMultiAttach
Indicates whether Amazon EBS Multi-Attach is enabled.
public Nullable<bool> EnableMultiAttach { get; set; }
Property Value
System.Nullable<System.Boolean>
Remarks
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.
public Nullable<bool> Encrypted { get; set; }
Property Value
System.Nullable<System.Boolean>
Remarks
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
EncryptionKey
The customer-managed encryption key that is used to encrypt the Volume.
public IKey EncryptionKey { get; set; }
Property Value
Remarks
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.
public Nullable<double> Iops { get; set; }
Property Value
System.Nullable<System.Double>
Remarks
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.
RemovalPolicy
Policy to apply when the volume is removed from the stack.
public Nullable<RemovalPolicy> RemovalPolicy { get; set; }
Property Value
System.Nullable<RemovalPolicy>
Remarks
Default: RemovalPolicy.RETAIN
Size
The size of the volume, in GiBs.
public Size Size { get; set; }
Property Value
Remarks
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.
SnapshotId
The snapshot from which to create the volume.
public string SnapshotId { get; set; }
Property Value
System.String
Remarks
You must specify either a snapshot ID or a volume size.
Default: The EBS volume is not created from a snapshot.
VolumeName
The value of the physicalName property of this resource.
public string VolumeName { get; set; }
Property Value
System.String
Remarks
Default: The physical name will be allocated by CloudFormation at deployment time
VolumeType
The type of the volume;
public Nullable<EbsDeviceVolumeType> VolumeType { get; set; }
Property Value
System.Nullable<EbsDeviceVolumeType>
Remarks
what type of storage to use to form the EBS Volume.
Default: {@link EbsDeviceVolumeType.GENERAL_PURPOSE_SSD}