/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the ec2-2016-11-15.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.EC2.Model
{
///
/// Container for the parameters to the CreateVolume operation.
/// Creates an EBS volume that can be attached to an instance in the same Availability
/// Zone.
///
///
///
/// You can create a new empty volume or restore a volume from an EBS snapshot. Any Amazon
/// Web Services Marketplace product codes from the snapshot are propagated to the volume.
///
///
///
/// You can create encrypted volumes. Encrypted volumes must be attached to instances
/// that support Amazon EBS encryption. Volumes that are created from encrypted snapshots
/// are also automatically encrypted. For more information, see Amazon
/// EBS encryption in the Amazon Elastic Compute Cloud User Guide.
///
///
///
/// You can tag your volumes during creation. For more information, see Tag
/// your Amazon EC2 resources in the Amazon Elastic Compute Cloud User Guide.
///
///
///
/// For more information, see Create
/// an Amazon EBS volume in the Amazon Elastic Compute Cloud User Guide.
///
///
public partial class CreateVolumeRequest : AmazonEC2Request
{
private string _availabilityZone;
private string _clientToken;
private bool? _encrypted;
private int? _iops;
private string _kmsKeyId;
private bool? _multiAttachEnabled;
private string _outpostArn;
private int? _size;
private string _snapshotId;
private List _tagSpecifications = new List();
private int? _throughput;
private VolumeType _volumeType;
///
/// Empty constructor used to set properties independently even when a simple constructor is available
///
public CreateVolumeRequest() { }
///
/// Instantiates CreateVolumeRequest with the parameterized properties
///
/// The ID of the Availability Zone in which to create the volume. For example, us-east-1a
.
/// 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 -
io1
and io2
: 4-16,384 -
st1
and sc1
: 125-16,384 -
standard
: 1-1,024
public CreateVolumeRequest(string availabilityZone, int size)
{
_availabilityZone = availabilityZone;
_size = size;
}
///
/// Instantiates CreateVolumeRequest with the parameterized properties
///
/// The ID of the Availability Zone in which to create the volume. For example, us-east-1a
.
/// The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.
public CreateVolumeRequest(string availabilityZone, string snapshotId)
{
_availabilityZone = availabilityZone;
_snapshotId = snapshotId;
}
///
/// Gets and sets the property AvailabilityZone.
///
/// The ID of the Availability Zone in which to create the volume. For example, us-east-1a
.
///
///
[AWSProperty(Required=true)]
public string AvailabilityZone
{
get { return this._availabilityZone; }
set { this._availabilityZone = value; }
}
// Check to see if AvailabilityZone property is set
internal bool IsSetAvailabilityZone()
{
return this._availabilityZone != null;
}
///
/// Gets and sets the property ClientToken.
///
/// Unique, case-sensitive identifier that you provide to ensure the idempotency of the
/// request. For more information, see Ensure
/// Idempotency.
///
///
public string ClientToken
{
get { return this._clientToken; }
set { this._clientToken = value; }
}
// Check to see if ClientToken property is set
internal bool IsSetClientToken()
{
return this._clientToken != null;
}
///
/// Gets and sets the 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 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.
///
///
public bool Encrypted
{
get { return this._encrypted.GetValueOrDefault(); }
set { this._encrypted = value; }
}
// Check to see if Encrypted property is set
internal bool IsSetEncrypted()
{
return this._encrypted.HasValue;
}
///
/// Gets and sets the 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-64,000 IOPS
///
///
///
/// io1
and io2
volumes support up to 64,000 IOPS only on Instances
/// built on the Nitro System. Other instance families support 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 int Iops
{
get { return this._iops.GetValueOrDefault(); }
set { this._iops = value; }
}
// Check to see if Iops property is set
internal bool IsSetIops()
{
return this._iops.HasValue;
}
///
/// Gets and sets the property KmsKeyId.
///
/// The identifier of the Key Management Service (KMS) KMS key to use for Amazon EBS encryption.
/// If this parameter is not specified, your KMS key for Amazon EBS is used. If KmsKeyId
/// is specified, the encrypted state must be true
.
///
///
///
/// You can specify the KMS key using any of the following:
///
/// -
///
/// Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.
///
///
-
///
/// Key alias. For example, alias/ExampleAlias.
///
///
-
///
/// 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.
///
///
///
/// Amazon Web Services authenticates the KMS key asynchronously. Therefore, if you specify
/// an ID, alias, or ARN that is not valid, the action can appear to complete, but eventually
/// fails.
///
///
public string KmsKeyId
{
get { return this._kmsKeyId; }
set { this._kmsKeyId = value; }
}
// Check to see if KmsKeyId property is set
internal bool IsSetKmsKeyId()
{
return this._kmsKeyId != null;
}
///
/// Gets and sets the property MultiAttachEnabled.
///
/// Indicates whether to enable Amazon EBS Multi-Attach. If you enable Multi-Attach, you
/// can attach the volume to up to 16 Instances
/// built on the Nitro System in the same Availability Zone. This parameter is supported
/// with io1
and io2
volumes only. For more information, see
///
/// Amazon EBS Multi-Attach in the Amazon Elastic Compute Cloud User Guide.
///
///
public bool MultiAttachEnabled
{
get { return this._multiAttachEnabled.GetValueOrDefault(); }
set { this._multiAttachEnabled = value; }
}
// Check to see if MultiAttachEnabled property is set
internal bool IsSetMultiAttachEnabled()
{
return this._multiAttachEnabled.HasValue;
}
///
/// Gets and sets the property OutpostArn.
///
/// The Amazon Resource Name (ARN) of the Outpost.
///
///
public string OutpostArn
{
get { return this._outpostArn; }
set { this._outpostArn = value; }
}
// Check to see if OutpostArn property is set
internal bool IsSetOutpostArn()
{
return this._outpostArn != null;
}
///
/// Gets and sets the 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
///
/// -
///
///
io1
and io2
: 4-16,384
///
/// -
///
///
st1
and sc1
: 125-16,384
///
/// -
///
///
standard
: 1-1,024
///
///
///
public int Size
{
get { return this._size.GetValueOrDefault(); }
set { this._size = value; }
}
// Check to see if Size property is set
internal bool IsSetSize()
{
return this._size.HasValue;
}
///
/// Gets and sets the property SnapshotId.
///
/// The snapshot from which to create the volume. You must specify either a snapshot ID
/// or a volume size.
///
///
public string SnapshotId
{
get { return this._snapshotId; }
set { this._snapshotId = value; }
}
// Check to see if SnapshotId property is set
internal bool IsSetSnapshotId()
{
return this._snapshotId != null;
}
///
/// Gets and sets the property TagSpecifications.
///
/// The tags to apply to the volume during creation.
///
///
public List TagSpecifications
{
get { return this._tagSpecifications; }
set { this._tagSpecifications = value; }
}
// Check to see if TagSpecifications property is set
internal bool IsSetTagSpecifications()
{
return this._tagSpecifications != null && this._tagSpecifications.Count > 0;
}
///
/// Gets and sets the 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.
///
///
///
/// Valid Range: Minimum value of 125. Maximum value of 1000.
///
///
public int Throughput
{
get { return this._throughput.GetValueOrDefault(); }
set { this._throughput = value; }
}
// Check to see if Throughput property is set
internal bool IsSetThroughput()
{
return this._throughput.HasValue;
}
///
/// Gets and sets the 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
///
///
///
/// Throughput Optimized HDD (st1
) and Cold HDD (sc1
) volumes
/// can't be used as boot volumes.
///
///
///
/// For more information, see Amazon
/// EBS volume types in the Amazon Elastic Compute Cloud User Guide.
///
///
///
/// Default: gp2
///
///
public VolumeType VolumeType
{
get { return this._volumeType; }
set { this._volumeType = value; }
}
// Check to see if VolumeType property is set
internal bool IsSetVolumeType()
{
return this._volumeType != null;
}
}
}