/* * 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: 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; } } }