All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.awsconnector.inputs.AwsEc2VolumePropertiesArgs Maven / Gradle / Ivy

There is a newer version: 2.89.2
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azurenative.awsconnector.inputs;

import com.pulumi.azurenative.awsconnector.inputs.TagArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * Definition of awsEc2Volume
 * 
 */
public final class AwsEc2VolumePropertiesArgs extends com.pulumi.resources.ResourceArgs {

    public static final AwsEc2VolumePropertiesArgs Empty = new AwsEc2VolumePropertiesArgs();

    /**
     * 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.
     * 
     */
    @Import(name="autoEnableIO")
    private @Nullable Output autoEnableIO;

    /**
     * @return 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.
     * 
     */
    public Optional> autoEnableIO() {
        return Optional.ofNullable(this.autoEnableIO);
    }

    /**
     * The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.
     * 
     */
    @Import(name="availabilityZone")
    private @Nullable Output availabilityZone;

    /**
     * @return The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.
     * 
     */
    public Optional> availabilityZone() {
        return Optional.ofNullable(this.availabilityZone);
    }

    /**
     * Indicates 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 [Encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#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 [Supported instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances).
     * 
     */
    @Import(name="encrypted")
    private @Nullable Output encrypted;

    /**
     * @return Indicates 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 [Encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#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 [Supported instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances).
     * 
     */
    public Optional> encrypted() {
        return Optional.ofNullable(this.encrypted);
    }

    /**
     * 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:  +   ``gp3``: 3,000 - 16,000 IOPS  +   ``io1``: 100 - 64,000 IOPS  +   ``io2``: 100 - 256,000 IOPS   For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). On other instances, you can achieve 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.
     * 
     */
    @Import(name="iops")
    private @Nullable Output iops;

    /**
     * @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:  +   ``gp3``: 3,000 - 16,000 IOPS  +   ``io1``: 100 - 64,000 IOPS  +   ``io2``: 100 - 256,000 IOPS   For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). On other instances, you can achieve 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 Optional> iops() {
        return Optional.ofNullable(this.iops);
    }

    /**
     * The identifier of the kms-key-long to use for Amazon EBS encryption. If ``KmsKeyId`` is specified, the encrypted state must be ``true``. If you omit this property and your account is enabled for encryption by default, or *Encrypted* is set to ``true``, then the volume is encrypted using the default key specified for your account. If your account does not have a default key, then the volume is encrypted using the aws-managed-key. Alternatively, if you want to specify a different key, you can specify one of the following:  +  Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.  +  Key alias. Specify the alias for the key, prefixed with ``alias/``. For example, for a key with the alias ``my_cmk``, use ``alias/my_cmk``. Or to specify the aws-managed-key, use ``alias/aws/ebs``.  +  Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.  +  Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
     * 
     */
    @Import(name="kmsKeyId")
    private @Nullable Output kmsKeyId;

    /**
     * @return The identifier of the kms-key-long to use for Amazon EBS encryption. If ``KmsKeyId`` is specified, the encrypted state must be ``true``. If you omit this property and your account is enabled for encryption by default, or *Encrypted* is set to ``true``, then the volume is encrypted using the default key specified for your account. If your account does not have a default key, then the volume is encrypted using the aws-managed-key. Alternatively, if you want to specify a different key, you can specify one of the following:  +  Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.  +  Key alias. Specify the alias for the key, prefixed with ``alias/``. For example, for a key with the alias ``my_cmk``, use ``alias/my_cmk``. Or to specify the aws-managed-key, use ``alias/aws/ebs``.  +  Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.  +  Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
     * 
     */
    public Optional> kmsKeyId() {
        return Optional.ofNullable(this.kmsKeyId);
    }

    /**
     * Indicates whether Amazon EBS Multi-Attach is enabled. CFNlong does not currently support updating a single-attach volume to be multi-attach enabled, updating a multi-attach enabled volume to be single-attach, or updating the size or number of I/O operations per second (IOPS) of a multi-attach enabled volume.
     * 
     */
    @Import(name="multiAttachEnabled")
    private @Nullable Output multiAttachEnabled;

    /**
     * @return Indicates whether Amazon EBS Multi-Attach is enabled. CFNlong does not currently support updating a single-attach volume to be multi-attach enabled, updating a multi-attach enabled volume to be single-attach, or updating the size or number of I/O operations per second (IOPS) of a multi-attach enabled volume.
     * 
     */
    public Optional> multiAttachEnabled() {
        return Optional.ofNullable(this.multiAttachEnabled);
    }

    /**
     * The Amazon Resource Name (ARN) of the Outpost.
     * 
     */
    @Import(name="outpostArn")
    private @Nullable Output outpostArn;

    /**
     * @return The Amazon Resource Name (ARN) of the Outpost.
     * 
     */
    public Optional> outpostArn() {
        return Optional.ofNullable(this.outpostArn);
    }

    /**
     * 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:  +   ``gp2`` and ``gp3``: 1 - 16,384 GiB  +   ``io1``: 4 - 16,384 GiB  +   ``io2``: 4 - 65,536 GiB  +   ``st1`` and ``sc1``: 125 - 16,384 GiB  +   ``standard``: 1 - 1024 GiB
     * 
     */
    @Import(name="size")
    private @Nullable Output size;

    /**
     * @return 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:  +   ``gp2`` and ``gp3``: 1 - 16,384 GiB  +   ``io1``: 4 - 16,384 GiB  +   ``io2``: 4 - 65,536 GiB  +   ``st1`` and ``sc1``: 125 - 16,384 GiB  +   ``standard``: 1 - 1024 GiB
     * 
     */
    public Optional> size() {
        return Optional.ofNullable(this.size);
    }

    /**
     * The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.
     * 
     */
    @Import(name="snapshotId")
    private @Nullable Output snapshotId;

    /**
     * @return The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.
     * 
     */
    public Optional> snapshotId() {
        return Optional.ofNullable(this.snapshotId);
    }

    /**
     * The tags to apply to the volume during creation.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return The tags to apply to the volume during creation.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * The throughput to provision for a volume, with a maximum of 1,000 MiB/s. This parameter is valid only for ``gp3`` volumes. The default value is 125. Valid Range: Minimum value of 125. Maximum value of 1000.
     * 
     */
    @Import(name="throughput")
    private @Nullable Output throughput;

    /**
     * @return The throughput to provision for a volume, with a maximum of 1,000 MiB/s. This parameter is valid only for ``gp3`` volumes. The default value is 125. Valid Range: Minimum value of 125. Maximum value of 1000.
     * 
     */
    public Optional> throughput() {
        return Optional.ofNullable(this.throughput);
    }

    /**
     * Property volumeId
     * 
     */
    @Import(name="volumeId")
    private @Nullable Output volumeId;

    /**
     * @return Property volumeId
     * 
     */
    public Optional> volumeId() {
        return Optional.ofNullable(this.volumeId);
    }

    /**
     * The volume type. This parameter can be one of the following values:  +  General Purpose SSD: ``gp2`` | ``gp3``   +  Provisioned IOPS SSD: ``io1`` | ``io2``   +  Throughput Optimized HDD: ``st1``   +  Cold HDD: ``sc1``   +  Magnetic: ``standard``    For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) in the *Amazon Elastic Compute Cloud User Guide*. Default: ``gp2``
     * 
     */
    @Import(name="volumeType")
    private @Nullable Output volumeType;

    /**
     * @return The volume type. This parameter can be one of the following values:  +  General Purpose SSD: ``gp2`` | ``gp3``   +  Provisioned IOPS SSD: ``io1`` | ``io2``   +  Throughput Optimized HDD: ``st1``   +  Cold HDD: ``sc1``   +  Magnetic: ``standard``    For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) in the *Amazon Elastic Compute Cloud User Guide*. Default: ``gp2``
     * 
     */
    public Optional> volumeType() {
        return Optional.ofNullable(this.volumeType);
    }

    private AwsEc2VolumePropertiesArgs() {}

    private AwsEc2VolumePropertiesArgs(AwsEc2VolumePropertiesArgs $) {
        this.autoEnableIO = $.autoEnableIO;
        this.availabilityZone = $.availabilityZone;
        this.encrypted = $.encrypted;
        this.iops = $.iops;
        this.kmsKeyId = $.kmsKeyId;
        this.multiAttachEnabled = $.multiAttachEnabled;
        this.outpostArn = $.outpostArn;
        this.size = $.size;
        this.snapshotId = $.snapshotId;
        this.tags = $.tags;
        this.throughput = $.throughput;
        this.volumeId = $.volumeId;
        this.volumeType = $.volumeType;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(AwsEc2VolumePropertiesArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private AwsEc2VolumePropertiesArgs $;

        public Builder() {
            $ = new AwsEc2VolumePropertiesArgs();
        }

        public Builder(AwsEc2VolumePropertiesArgs defaults) {
            $ = new AwsEc2VolumePropertiesArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param autoEnableIO 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.
         * 
         * @return builder
         * 
         */
        public Builder autoEnableIO(@Nullable Output autoEnableIO) {
            $.autoEnableIO = autoEnableIO;
            return this;
        }

        /**
         * @param autoEnableIO 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.
         * 
         * @return builder
         * 
         */
        public Builder autoEnableIO(Boolean autoEnableIO) {
            return autoEnableIO(Output.of(autoEnableIO));
        }

        /**
         * @param availabilityZone The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.
         * 
         * @return builder
         * 
         */
        public Builder availabilityZone(@Nullable Output availabilityZone) {
            $.availabilityZone = availabilityZone;
            return this;
        }

        /**
         * @param availabilityZone The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.
         * 
         * @return builder
         * 
         */
        public Builder availabilityZone(String availabilityZone) {
            return availabilityZone(Output.of(availabilityZone));
        }

        /**
         * @param encrypted Indicates 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 [Encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#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 [Supported instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances).
         * 
         * @return builder
         * 
         */
        public Builder encrypted(@Nullable Output encrypted) {
            $.encrypted = encrypted;
            return this;
        }

        /**
         * @param encrypted Indicates 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 [Encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#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 [Supported instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances).
         * 
         * @return builder
         * 
         */
        public Builder encrypted(Boolean encrypted) {
            return encrypted(Output.of(encrypted));
        }

        /**
         * @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:  +   ``gp3``: 3,000 - 16,000 IOPS  +   ``io1``: 100 - 64,000 IOPS  +   ``io2``: 100 - 256,000 IOPS   For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). On other instances, you can achieve 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 builder
         * 
         */
        public Builder iops(@Nullable Output iops) {
            $.iops = iops;
            return this;
        }

        /**
         * @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:  +   ``gp3``: 3,000 - 16,000 IOPS  +   ``io1``: 100 - 64,000 IOPS  +   ``io2``: 100 - 256,000 IOPS   For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). On other instances, you can achieve 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 builder
         * 
         */
        public Builder iops(Integer iops) {
            return iops(Output.of(iops));
        }

        /**
         * @param kmsKeyId The identifier of the kms-key-long to use for Amazon EBS encryption. If ``KmsKeyId`` is specified, the encrypted state must be ``true``. If you omit this property and your account is enabled for encryption by default, or *Encrypted* is set to ``true``, then the volume is encrypted using the default key specified for your account. If your account does not have a default key, then the volume is encrypted using the aws-managed-key. Alternatively, if you want to specify a different key, you can specify one of the following:  +  Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.  +  Key alias. Specify the alias for the key, prefixed with ``alias/``. For example, for a key with the alias ``my_cmk``, use ``alias/my_cmk``. Or to specify the aws-managed-key, use ``alias/aws/ebs``.  +  Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.  +  Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
         * 
         * @return builder
         * 
         */
        public Builder kmsKeyId(@Nullable Output kmsKeyId) {
            $.kmsKeyId = kmsKeyId;
            return this;
        }

        /**
         * @param kmsKeyId The identifier of the kms-key-long to use for Amazon EBS encryption. If ``KmsKeyId`` is specified, the encrypted state must be ``true``. If you omit this property and your account is enabled for encryption by default, or *Encrypted* is set to ``true``, then the volume is encrypted using the default key specified for your account. If your account does not have a default key, then the volume is encrypted using the aws-managed-key. Alternatively, if you want to specify a different key, you can specify one of the following:  +  Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.  +  Key alias. Specify the alias for the key, prefixed with ``alias/``. For example, for a key with the alias ``my_cmk``, use ``alias/my_cmk``. Or to specify the aws-managed-key, use ``alias/aws/ebs``.  +  Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.  +  Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
         * 
         * @return builder
         * 
         */
        public Builder kmsKeyId(String kmsKeyId) {
            return kmsKeyId(Output.of(kmsKeyId));
        }

        /**
         * @param multiAttachEnabled Indicates whether Amazon EBS Multi-Attach is enabled. CFNlong does not currently support updating a single-attach volume to be multi-attach enabled, updating a multi-attach enabled volume to be single-attach, or updating the size or number of I/O operations per second (IOPS) of a multi-attach enabled volume.
         * 
         * @return builder
         * 
         */
        public Builder multiAttachEnabled(@Nullable Output multiAttachEnabled) {
            $.multiAttachEnabled = multiAttachEnabled;
            return this;
        }

        /**
         * @param multiAttachEnabled Indicates whether Amazon EBS Multi-Attach is enabled. CFNlong does not currently support updating a single-attach volume to be multi-attach enabled, updating a multi-attach enabled volume to be single-attach, or updating the size or number of I/O operations per second (IOPS) of a multi-attach enabled volume.
         * 
         * @return builder
         * 
         */
        public Builder multiAttachEnabled(Boolean multiAttachEnabled) {
            return multiAttachEnabled(Output.of(multiAttachEnabled));
        }

        /**
         * @param outpostArn The Amazon Resource Name (ARN) of the Outpost.
         * 
         * @return builder
         * 
         */
        public Builder outpostArn(@Nullable Output outpostArn) {
            $.outpostArn = outpostArn;
            return this;
        }

        /**
         * @param outpostArn The Amazon Resource Name (ARN) of the Outpost.
         * 
         * @return builder
         * 
         */
        public Builder outpostArn(String outpostArn) {
            return outpostArn(Output.of(outpostArn));
        }

        /**
         * @param size 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:  +   ``gp2`` and ``gp3``: 1 - 16,384 GiB  +   ``io1``: 4 - 16,384 GiB  +   ``io2``: 4 - 65,536 GiB  +   ``st1`` and ``sc1``: 125 - 16,384 GiB  +   ``standard``: 1 - 1024 GiB
         * 
         * @return builder
         * 
         */
        public Builder size(@Nullable Output size) {
            $.size = size;
            return this;
        }

        /**
         * @param size 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:  +   ``gp2`` and ``gp3``: 1 - 16,384 GiB  +   ``io1``: 4 - 16,384 GiB  +   ``io2``: 4 - 65,536 GiB  +   ``st1`` and ``sc1``: 125 - 16,384 GiB  +   ``standard``: 1 - 1024 GiB
         * 
         * @return builder
         * 
         */
        public Builder size(Integer size) {
            return size(Output.of(size));
        }

        /**
         * @param snapshotId The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(@Nullable Output snapshotId) {
            $.snapshotId = snapshotId;
            return this;
        }

        /**
         * @param snapshotId The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(String snapshotId) {
            return snapshotId(Output.of(snapshotId));
        }

        /**
         * @param tags The tags to apply to the volume during creation.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags The tags to apply to the volume during creation.
         * 
         * @return builder
         * 
         */
        public Builder tags(List tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tags The tags to apply to the volume during creation.
         * 
         * @return builder
         * 
         */
        public Builder tags(TagArgs... tags) {
            return tags(List.of(tags));
        }

        /**
         * @param throughput The throughput to provision for a volume, with a maximum of 1,000 MiB/s. This parameter is valid only for ``gp3`` volumes. The default value is 125. Valid Range: Minimum value of 125. Maximum value of 1000.
         * 
         * @return builder
         * 
         */
        public Builder throughput(@Nullable Output throughput) {
            $.throughput = throughput;
            return this;
        }

        /**
         * @param throughput The throughput to provision for a volume, with a maximum of 1,000 MiB/s. This parameter is valid only for ``gp3`` volumes. The default value is 125. Valid Range: Minimum value of 125. Maximum value of 1000.
         * 
         * @return builder
         * 
         */
        public Builder throughput(Integer throughput) {
            return throughput(Output.of(throughput));
        }

        /**
         * @param volumeId Property volumeId
         * 
         * @return builder
         * 
         */
        public Builder volumeId(@Nullable Output volumeId) {
            $.volumeId = volumeId;
            return this;
        }

        /**
         * @param volumeId Property volumeId
         * 
         * @return builder
         * 
         */
        public Builder volumeId(String volumeId) {
            return volumeId(Output.of(volumeId));
        }

        /**
         * @param volumeType The volume type. This parameter can be one of the following values:  +  General Purpose SSD: ``gp2`` | ``gp3``   +  Provisioned IOPS SSD: ``io1`` | ``io2``   +  Throughput Optimized HDD: ``st1``   +  Cold HDD: ``sc1``   +  Magnetic: ``standard``    For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) in the *Amazon Elastic Compute Cloud User Guide*. Default: ``gp2``
         * 
         * @return builder
         * 
         */
        public Builder volumeType(@Nullable Output volumeType) {
            $.volumeType = volumeType;
            return this;
        }

        /**
         * @param volumeType The volume type. This parameter can be one of the following values:  +  General Purpose SSD: ``gp2`` | ``gp3``   +  Provisioned IOPS SSD: ``io1`` | ``io2``   +  Throughput Optimized HDD: ``st1``   +  Cold HDD: ``sc1``   +  Magnetic: ``standard``    For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) in the *Amazon Elastic Compute Cloud User Guide*. Default: ``gp2``
         * 
         * @return builder
         * 
         */
        public Builder volumeType(String volumeType) {
            return volumeType(Output.of(volumeType));
        }

        public AwsEc2VolumePropertiesArgs build() {
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy