{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.AutoScaling.Types.Ebs -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.AutoScaling.Types.Ebs where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude -- | Describes information used to set up an Amazon EBS volume specified in a -- block device mapping. -- -- /See:/ 'newEbs' smart constructor. data Ebs = Ebs' { -- | Indicates whether the volume is deleted on instance termination. For -- Amazon EC2 Auto Scaling, the default value is @true@. deleteOnTermination :: Prelude.Maybe Prelude.Bool, -- | Specifies whether the volume should be encrypted. Encrypted EBS volumes -- can only be attached to instances that support Amazon EBS encryption. -- For more information, see -- . -- If your AMI uses encrypted volumes, you can also only launch it on -- supported instance types. -- -- If you are creating a volume from a snapshot, you cannot create an -- unencrypted volume from an encrypted snapshot. Also, you cannot specify -- a KMS key ID when using a launch configuration. -- -- If you enable encryption by default, the EBS volumes that you create are -- always encrypted, either using the Amazon Web Services managed KMS key -- or a customer-managed KMS key, regardless of whether the snapshot was -- encrypted. -- -- For more information, see -- -- in the /Amazon EC2 Auto Scaling User Guide/. encrypted :: Prelude.Maybe Prelude.Bool, -- | The number of input\/output (I\/O) operations per second (IOPS) to -- provision for the volume. For @gp3@ and @io1@ volumes, this represents -- the number of IOPS that are provisioned for the volume. For @gp2@ -- volumes, this represents the baseline performance of the volume and the -- rate at which the volume accumulates I\/O credits for bursting. -- -- The following are the supported values for each volume type: -- -- - @gp3@: 3,000-16,000 IOPS -- -- - @io1@: 100-64,000 IOPS -- -- For @io1@ volumes, we guarantee 64,000 IOPS only for -- . -- Other instance families guarantee performance up to 32,000 IOPS. -- -- @Iops@ is supported when the volume type is @gp3@ or @io1@ and required -- only when the volume type is @io1@. (Not used with @standard@, @gp2@, -- @st1@, or @sc1@ volumes.) iops :: Prelude.Maybe Prelude.Natural, -- | The snapshot ID of the volume to use. -- -- You must specify either a @VolumeSize@ or a @SnapshotId@. snapshotId :: Prelude.Maybe Prelude.Text, -- | The throughput (MiBps) to provision for a @gp3@ volume. throughput :: Prelude.Maybe Prelude.Natural, -- | The volume size, in GiBs. The following are the supported volumes sizes -- for each volume type: -- -- - @gp2@ and @gp3@: 1-16,384 -- -- - @io1@: 4-16,384 -- -- - @st1@ and @sc1@: 125-16,384 -- -- - @standard@: 1-1,024 -- -- You must specify either a @SnapshotId@ or a @VolumeSize@. If you specify -- both @SnapshotId@ and @VolumeSize@, the volume size must be equal or -- greater than the size of the snapshot. volumeSize :: Prelude.Maybe Prelude.Natural, -- | The volume type. For more information, see -- -- in the /Amazon EC2 User Guide for Linux Instances/. -- -- Valid values: @standard@ | @io1@ | @gp2@ | @st1@ | @sc1@ | @gp3@ volumeType :: Prelude.Maybe Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'Ebs' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'deleteOnTermination', 'ebs_deleteOnTermination' - Indicates whether the volume is deleted on instance termination. For -- Amazon EC2 Auto Scaling, the default value is @true@. -- -- 'encrypted', 'ebs_encrypted' - Specifies whether the volume should be encrypted. Encrypted EBS volumes -- can only be attached to instances that support Amazon EBS encryption. -- For more information, see -- . -- If your AMI uses encrypted volumes, you can also only launch it on -- supported instance types. -- -- If you are creating a volume from a snapshot, you cannot create an -- unencrypted volume from an encrypted snapshot. Also, you cannot specify -- a KMS key ID when using a launch configuration. -- -- If you enable encryption by default, the EBS volumes that you create are -- always encrypted, either using the Amazon Web Services managed KMS key -- or a customer-managed KMS key, regardless of whether the snapshot was -- encrypted. -- -- For more information, see -- -- in the /Amazon EC2 Auto Scaling User Guide/. -- -- 'iops', 'ebs_iops' - The number of input\/output (I\/O) operations per second (IOPS) to -- provision for the volume. For @gp3@ and @io1@ volumes, this represents -- the number of IOPS that are provisioned for the volume. For @gp2@ -- volumes, this represents the baseline performance of the volume and the -- rate at which the volume accumulates I\/O credits for bursting. -- -- The following are the supported values for each volume type: -- -- - @gp3@: 3,000-16,000 IOPS -- -- - @io1@: 100-64,000 IOPS -- -- For @io1@ volumes, we guarantee 64,000 IOPS only for -- . -- Other instance families guarantee performance up to 32,000 IOPS. -- -- @Iops@ is supported when the volume type is @gp3@ or @io1@ and required -- only when the volume type is @io1@. (Not used with @standard@, @gp2@, -- @st1@, or @sc1@ volumes.) -- -- 'snapshotId', 'ebs_snapshotId' - The snapshot ID of the volume to use. -- -- You must specify either a @VolumeSize@ or a @SnapshotId@. -- -- 'throughput', 'ebs_throughput' - The throughput (MiBps) to provision for a @gp3@ volume. -- -- 'volumeSize', 'ebs_volumeSize' - The volume size, in GiBs. The following are the supported volumes sizes -- for each volume type: -- -- - @gp2@ and @gp3@: 1-16,384 -- -- - @io1@: 4-16,384 -- -- - @st1@ and @sc1@: 125-16,384 -- -- - @standard@: 1-1,024 -- -- You must specify either a @SnapshotId@ or a @VolumeSize@. If you specify -- both @SnapshotId@ and @VolumeSize@, the volume size must be equal or -- greater than the size of the snapshot. -- -- 'volumeType', 'ebs_volumeType' - The volume type. For more information, see -- -- in the /Amazon EC2 User Guide for Linux Instances/. -- -- Valid values: @standard@ | @io1@ | @gp2@ | @st1@ | @sc1@ | @gp3@ newEbs :: Ebs newEbs = Ebs' { deleteOnTermination = Prelude.Nothing, encrypted = Prelude.Nothing, iops = Prelude.Nothing, snapshotId = Prelude.Nothing, throughput = Prelude.Nothing, volumeSize = Prelude.Nothing, volumeType = Prelude.Nothing } -- | Indicates whether the volume is deleted on instance termination. For -- Amazon EC2 Auto Scaling, the default value is @true@. ebs_deleteOnTermination :: Lens.Lens' Ebs (Prelude.Maybe Prelude.Bool) ebs_deleteOnTermination = Lens.lens (\Ebs' {deleteOnTermination} -> deleteOnTermination) (\s@Ebs' {} a -> s {deleteOnTermination = a} :: Ebs) -- | Specifies whether the volume should be encrypted. Encrypted EBS volumes -- can only be attached to instances that support Amazon EBS encryption. -- For more information, see -- . -- If your AMI uses encrypted volumes, you can also only launch it on -- supported instance types. -- -- If you are creating a volume from a snapshot, you cannot create an -- unencrypted volume from an encrypted snapshot. Also, you cannot specify -- a KMS key ID when using a launch configuration. -- -- If you enable encryption by default, the EBS volumes that you create are -- always encrypted, either using the Amazon Web Services managed KMS key -- or a customer-managed KMS key, regardless of whether the snapshot was -- encrypted. -- -- For more information, see -- -- in the /Amazon EC2 Auto Scaling User Guide/. ebs_encrypted :: Lens.Lens' Ebs (Prelude.Maybe Prelude.Bool) ebs_encrypted = Lens.lens (\Ebs' {encrypted} -> encrypted) (\s@Ebs' {} a -> s {encrypted = a} :: Ebs) -- | The number of input\/output (I\/O) operations per second (IOPS) to -- provision for the volume. For @gp3@ and @io1@ volumes, this represents -- the number of IOPS that are provisioned for the volume. For @gp2@ -- volumes, this represents the baseline performance of the volume and the -- rate at which the volume accumulates I\/O credits for bursting. -- -- The following are the supported values for each volume type: -- -- - @gp3@: 3,000-16,000 IOPS -- -- - @io1@: 100-64,000 IOPS -- -- For @io1@ volumes, we guarantee 64,000 IOPS only for -- . -- Other instance families guarantee performance up to 32,000 IOPS. -- -- @Iops@ is supported when the volume type is @gp3@ or @io1@ and required -- only when the volume type is @io1@. (Not used with @standard@, @gp2@, -- @st1@, or @sc1@ volumes.) ebs_iops :: Lens.Lens' Ebs (Prelude.Maybe Prelude.Natural) ebs_iops = Lens.lens (\Ebs' {iops} -> iops) (\s@Ebs' {} a -> s {iops = a} :: Ebs) -- | The snapshot ID of the volume to use. -- -- You must specify either a @VolumeSize@ or a @SnapshotId@. ebs_snapshotId :: Lens.Lens' Ebs (Prelude.Maybe Prelude.Text) ebs_snapshotId = Lens.lens (\Ebs' {snapshotId} -> snapshotId) (\s@Ebs' {} a -> s {snapshotId = a} :: Ebs) -- | The throughput (MiBps) to provision for a @gp3@ volume. ebs_throughput :: Lens.Lens' Ebs (Prelude.Maybe Prelude.Natural) ebs_throughput = Lens.lens (\Ebs' {throughput} -> throughput) (\s@Ebs' {} a -> s {throughput = a} :: Ebs) -- | The volume size, in GiBs. The following are the supported volumes sizes -- for each volume type: -- -- - @gp2@ and @gp3@: 1-16,384 -- -- - @io1@: 4-16,384 -- -- - @st1@ and @sc1@: 125-16,384 -- -- - @standard@: 1-1,024 -- -- You must specify either a @SnapshotId@ or a @VolumeSize@. If you specify -- both @SnapshotId@ and @VolumeSize@, the volume size must be equal or -- greater than the size of the snapshot. ebs_volumeSize :: Lens.Lens' Ebs (Prelude.Maybe Prelude.Natural) ebs_volumeSize = Lens.lens (\Ebs' {volumeSize} -> volumeSize) (\s@Ebs' {} a -> s {volumeSize = a} :: Ebs) -- | The volume type. For more information, see -- -- in the /Amazon EC2 User Guide for Linux Instances/. -- -- Valid values: @standard@ | @io1@ | @gp2@ | @st1@ | @sc1@ | @gp3@ ebs_volumeType :: Lens.Lens' Ebs (Prelude.Maybe Prelude.Text) ebs_volumeType = Lens.lens (\Ebs' {volumeType} -> volumeType) (\s@Ebs' {} a -> s {volumeType = a} :: Ebs) instance Data.FromXML Ebs where parseXML x = Ebs' Prelude.<$> (x Data..@? "DeleteOnTermination") Prelude.<*> (x Data..@? "Encrypted") Prelude.<*> (x Data..@? "Iops") Prelude.<*> (x Data..@? "SnapshotId") Prelude.<*> (x Data..@? "Throughput") Prelude.<*> (x Data..@? "VolumeSize") Prelude.<*> (x Data..@? "VolumeType") instance Prelude.Hashable Ebs where hashWithSalt _salt Ebs' {..} = _salt `Prelude.hashWithSalt` deleteOnTermination `Prelude.hashWithSalt` encrypted `Prelude.hashWithSalt` iops `Prelude.hashWithSalt` snapshotId `Prelude.hashWithSalt` throughput `Prelude.hashWithSalt` volumeSize `Prelude.hashWithSalt` volumeType instance Prelude.NFData Ebs where rnf Ebs' {..} = Prelude.rnf deleteOnTermination `Prelude.seq` Prelude.rnf encrypted `Prelude.seq` Prelude.rnf iops `Prelude.seq` Prelude.rnf snapshotId `Prelude.seq` Prelude.rnf throughput `Prelude.seq` Prelude.rnf volumeSize `Prelude.seq` Prelude.rnf volumeType instance Data.ToQuery Ebs where toQuery Ebs' {..} = Prelude.mconcat [ "DeleteOnTermination" Data.=: deleteOnTermination, "Encrypted" Data.=: encrypted, "Iops" Data.=: iops, "SnapshotId" Data.=: snapshotId, "Throughput" Data.=: throughput, "VolumeSize" Data.=: volumeSize, "VolumeType" Data.=: volumeType ]