/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.ec2.model; import java.io.Serializable; import javax.annotation.Generated; /** *

* Describes a block device for an EBS volume. *

* * @see AWS API * Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class EbsBlockDevice implements Serializable, Cloneable { /** *

* Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. *

*/ private Boolean deleteOnTermination; /** *

* The number of I/O operations per second (IOPS). For gp3, io1, and io2 * 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: *

* *

* For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances * built on the Nitro System. Other instance families guarantee performance up to 32,000 IOPS. *

*

* This parameter is required for io1 and io2 volumes. The default for gp3 * volumes is 3,000 IOPS. This parameter is not supported for gp2, st1, sc1, * or standard volumes. *

*/ private Integer iops; /** *

* The ID of the snapshot. *

*/ private String snapshotId; /** *

* The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a * snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the * snapshot size. *

*

* The following are the supported volumes sizes for each volume type: *

* */ private Integer volumeSize; /** *

* The volume type. For more information, see Amazon EBS volume types in the * Amazon EC2 User Guide. If the volume type is io1 or io2, you must specify the * IOPS that the volume supports. *

*/ private String volumeType; /** *

* Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed CMK under which the EBS volume is * encrypted. *

*

* This parameter is only supported on BlockDeviceMapping objects called by RunInstances, RequestSpotFleet, and * * RequestSpotInstances. *

*/ private String kmsKeyId; /** *

* The throughput that the volume supports, in MiB/s. *

*

* This parameter is valid only for gp3 volumes. *

*

* Valid Range: Minimum value of 125. Maximum value of 1000. *

*/ private Integer throughput; /** *

* The ARN of the Outpost on which the snapshot is stored. *

*

* This parameter is only supported on BlockDeviceMapping objects called by CreateImage. *

*/ private String outpostArn; /** *

* Indicates whether the encryption state of an EBS volume is changed while being restored from a backing snapshot. * 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 Amazon EBS * encryption in the Amazon EC2 User Guide. *

*

* In no case can you remove encryption from an encrypted volume. *

*

* Encrypted volumes can only be attached to instances that support Amazon EBS encryption. For more information, see * Supported instance types. *

*

* This parameter is not returned by DescribeImageAttribute. *

*

* For CreateImage and RegisterImage, whether you can include this parameter, and the allowed values * differ depending on the type of block device mapping you are creating. *

* */ private Boolean encrypted; /** *

* Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. *

* * @param deleteOnTermination * Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. */ public void setDeleteOnTermination(Boolean deleteOnTermination) { this.deleteOnTermination = deleteOnTermination; } /** *

* Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. *

* * @return Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. */ public Boolean getDeleteOnTermination() { return this.deleteOnTermination; } /** *

* Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. *

* * @param deleteOnTermination * Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. * @return Returns a reference to this object so that method calls can be chained together. */ public EbsBlockDevice withDeleteOnTermination(Boolean deleteOnTermination) { setDeleteOnTermination(deleteOnTermination); return this; } /** *

* Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. *

* * @return Indicates whether the EBS volume is deleted on instance termination. For more information, see Preserving Amazon EBS volumes on instance termination in the Amazon EC2 User Guide. */ public Boolean isDeleteOnTermination() { return this.deleteOnTermination; } /** *

* The number of I/O operations per second (IOPS). For gp3, io1, and io2 * 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: *

* *

* For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances * built on the Nitro System. Other instance families guarantee performance up to 32,000 IOPS. *

*

* This parameter is required for io1 and io2 volumes. The default for gp3 * volumes is 3,000 IOPS. This parameter is not supported for gp2, st1, sc1, * or standard volumes. *

* * @param iops * The number of I/O operations per second (IOPS). For gp3, io1, and * io2 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: *

* *

* For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances built on the Nitro System. Other instance families guarantee performance up to 32,000 IOPS. *

*

* This parameter is required for io1 and io2 volumes. The default for * gp3 volumes is 3,000 IOPS. This parameter is not supported for gp2, * st1, sc1, or standard volumes. */ public void setIops(Integer iops) { this.iops = iops; } /** *

* The number of I/O operations per second (IOPS). For gp3, io1, and io2 * 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: *

* *

* For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances * built on the Nitro System. Other instance families guarantee performance up to 32,000 IOPS. *

*

* This parameter is required for io1 and io2 volumes. The default for gp3 * volumes is 3,000 IOPS. This parameter is not supported for gp2, st1, sc1, * or standard volumes. *

* * @return The number of I/O operations per second (IOPS). For gp3, io1, and * io2 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: *

* *

* For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances built on the Nitro System. Other instance families guarantee performance up to 32,000 * IOPS. *

*

* This parameter is required for io1 and io2 volumes. The default for * gp3 volumes is 3,000 IOPS. This parameter is not supported for gp2, * st1, sc1, or standard volumes. */ public Integer getIops() { return this.iops; } /** *

* The number of I/O operations per second (IOPS). For gp3, io1, and io2 * 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: *

* *

* For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances * built on the Nitro System. Other instance families guarantee performance up to 32,000 IOPS. *

*

* This parameter is required for io1 and io2 volumes. The default for gp3 * volumes is 3,000 IOPS. This parameter is not supported for gp2, st1, sc1, * or standard volumes. *

* * @param iops * The number of I/O operations per second (IOPS). For gp3, io1, and * io2 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: *

* *

* For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances built on the Nitro System. Other instance families guarantee performance up to 32,000 IOPS. *

*

* This parameter is required for io1 and io2 volumes. The default for * gp3 volumes is 3,000 IOPS. This parameter is not supported for gp2, * st1, sc1, or standard volumes. * @return Returns a reference to this object so that method calls can be chained together. */ public EbsBlockDevice withIops(Integer iops) { setIops(iops); return this; } /** *

* The ID of the snapshot. *

* * @param snapshotId * The ID of the snapshot. */ public void setSnapshotId(String snapshotId) { this.snapshotId = snapshotId; } /** *

* The ID of the snapshot. *

* * @return The ID of the snapshot. */ public String getSnapshotId() { return this.snapshotId; } /** *

* The ID of the snapshot. *

* * @param snapshotId * The ID of the snapshot. * @return Returns a reference to this object so that method calls can be chained together. */ public EbsBlockDevice withSnapshotId(String snapshotId) { setSnapshotId(snapshotId); return this; } /** *

* The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a * snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the * snapshot size. *

*

* The following are the supported volumes sizes for each volume type: *

* * * @param volumeSize * The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a * snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than * the snapshot size.

*

* The following are the supported volumes sizes for each volume type: *

*