com.pulumi.awsnative.ec2.kotlin.outputs.GetVolumeResult.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-aws-native-kotlin Show documentation
Show all versions of pulumi-aws-native-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.awsnative.ec2.kotlin.outputs
import com.pulumi.awsnative.kotlin.outputs.Tag
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.collections.List
/**
*
* @property 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.
* @property availabilityZone The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.
* @property 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).
* @property 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.
* @property 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.
* @property 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.
* @property outpostArn The Amazon Resource Name (ARN) of the Outpost.
* @property 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
* @property snapshotId The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.
* @property tags The tags to apply to the volume during creation.
* @property 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.
* @property volumeId The ID of the volume.
* @property 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``
*/
public data class GetVolumeResult(
public val autoEnableIo: Boolean? = null,
public val availabilityZone: String? = null,
public val encrypted: Boolean? = null,
public val iops: Int? = null,
public val kmsKeyId: String? = null,
public val multiAttachEnabled: Boolean? = null,
public val outpostArn: String? = null,
public val size: Int? = null,
public val snapshotId: String? = null,
public val tags: List? = null,
public val throughput: Int? = null,
public val volumeId: String? = null,
public val volumeType: String? = null,
) {
public companion object {
public fun toKotlin(javaType: com.pulumi.awsnative.ec2.outputs.GetVolumeResult): GetVolumeResult = GetVolumeResult(
autoEnableIo = javaType.autoEnableIo().map({ args0 -> args0 }).orElse(null),
availabilityZone = javaType.availabilityZone().map({ args0 -> args0 }).orElse(null),
encrypted = javaType.encrypted().map({ args0 -> args0 }).orElse(null),
iops = javaType.iops().map({ args0 -> args0 }).orElse(null),
kmsKeyId = javaType.kmsKeyId().map({ args0 -> args0 }).orElse(null),
multiAttachEnabled = javaType.multiAttachEnabled().map({ args0 -> args0 }).orElse(null),
outpostArn = javaType.outpostArn().map({ args0 -> args0 }).orElse(null),
size = javaType.size().map({ args0 -> args0 }).orElse(null),
snapshotId = javaType.snapshotId().map({ args0 -> args0 }).orElse(null),
tags = javaType.tags().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.kotlin.outputs.Tag.Companion.toKotlin(args0)
})
}),
throughput = javaType.throughput().map({ args0 -> args0 }).orElse(null),
volumeId = javaType.volumeId().map({ args0 -> args0 }).orElse(null),
volumeType = javaType.volumeType().map({ args0 -> args0 }).orElse(null),
)
}
}