import { Value } from '../../../cloudformation/Value';
/**
  Specifies a block device for an EBS volume.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html">the AWS Docs</a>
*/
export interface EbsProps {
    /** <code>DeleteOnTermination</code>  <a name="cfn-ec2-blockdev-template-deleteontermination"></a>
  Indicates whether the EBS volume is deleted on instance termination. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#preserving-volumes-on-termination">Preserving Amazon EBS volumes on instance termination</a> in the
  Amazon EC2 User Guide: br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    deleteOnTermination?: Value<boolean>;
    /** <code>Encrypted</code>  <a name="cfn-ec2-blockdev-template-encrypted"></a>
  Indicates whether the volume should be encrypted. The effect of setting the encryption state to <code>true</code> 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 <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default">Encryption by default</a> in the
  Amazon Elastic Compute Cloud User Guide: br />
  Encrypted Amazon EBS volumes must be attached to instances that support Amazon EBS encryption. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances">Supported instance types</a>.<br />
  After the instance is running, modifying this parameter results in instance <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement"> replacement</a>.
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    encrypted?: Value<boolean>;
    /** <p> */
    iops?: Value<number>;
    /** <p> */
    kmsKeyId?: Value<string>;
    /** <code>SnapshotId</code>  <a name="cfn-ec2-blockdev-template-snapshotid"></a>
  The ID of the snapshot.<br />
  If you specify both <code>SnapshotId</code> and <code>VolumeSize</code>, <code>VolumeSize</code> must be equal or greater than the size of the snapshot.<br />
  After the instance is running, modifying this parameter results in instance <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement"> replacement</a>.
  
  Required: Conditional<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    snapshotId?: Value<string>;
    /** <p> */
    volumeSize?: Value<number>;
    /** <code>VolumeType</code>  <a name="cfn-ec2-blockdev-template-volumetype"></a>
  The volume type. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html">Amazon EBS volume types</a> in the
  Amazon EC2 User Guide: If the volume type is <code>io1</code> or <code>io2</code>, you must specify the IOPS that the volume supports.<br />
  After the instance is running, modifying this parameter results in instance <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement"> replacement</a>.
  
  Required: No<br />
  
  Allowed values: <code>gp2 | gp3 | io1 | io2 | sc1 | st1 | standard</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    volumeType?: Value<'gp2' | 'gp3' | 'io1' | 'io2' | 'sc1' | 'st1' | 'standard'>;
}
