/*
* 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
{
///
/// The information to include in the launch template.
///
///
///
/// You must specify at least one parameter for the launch template data.
///
///
///
public partial class RequestLaunchTemplateData
{
private List _blockDeviceMappings = new List();
private LaunchTemplateCapacityReservationSpecificationRequest _capacityReservationSpecification;
private LaunchTemplateCpuOptionsRequest _cpuOptions;
private CreditSpecificationRequest _creditSpecification;
private bool? _disableApiStop;
private bool? _disableApiTermination;
private bool? _ebsOptimized;
private List _elasticGpuSpecifications = new List();
private List _elasticInferenceAccelerators = new List();
private LaunchTemplateEnclaveOptionsRequest _enclaveOptions;
private LaunchTemplateHibernationOptionsRequest _hibernationOptions;
private LaunchTemplateIamInstanceProfileSpecificationRequest _iamInstanceProfile;
private string _imageId;
private ShutdownBehavior _instanceInitiatedShutdownBehavior;
private LaunchTemplateInstanceMarketOptionsRequest _instanceMarketOptions;
private InstanceRequirementsRequest _instanceRequirements;
private InstanceType _instanceType;
private string _kernelId;
private string _keyName;
private List _licenseSpecifications = new List();
private LaunchTemplateInstanceMaintenanceOptionsRequest _maintenanceOptions;
private LaunchTemplateInstanceMetadataOptionsRequest _metadataOptions;
private LaunchTemplatesMonitoringRequest _monitoring;
private List _networkInterfaces = new List();
private LaunchTemplatePlacementRequest _placement;
private LaunchTemplatePrivateDnsNameOptionsRequest _privateDnsNameOptions;
private string _ramDiskId;
private List _securityGroupIds = new List();
private List _securityGroups = new List();
private List _tagSpecifications = new List();
private string _userData;
///
/// Gets and sets the property BlockDeviceMappings.
///
/// The block device mapping.
///
///
public List BlockDeviceMappings
{
get { return this._blockDeviceMappings; }
set { this._blockDeviceMappings = value; }
}
// Check to see if BlockDeviceMappings property is set
internal bool IsSetBlockDeviceMappings()
{
return this._blockDeviceMappings != null && this._blockDeviceMappings.Count > 0;
}
///
/// Gets and sets the property CapacityReservationSpecification.
///
/// The Capacity Reservation targeting option. If you do not specify this parameter, the
/// instance's Capacity Reservation preference defaults to open
, which enables
/// it to run in any open Capacity Reservation that has matching attributes (instance
/// type, platform, Availability Zone).
///
///
public LaunchTemplateCapacityReservationSpecificationRequest CapacityReservationSpecification
{
get { return this._capacityReservationSpecification; }
set { this._capacityReservationSpecification = value; }
}
// Check to see if CapacityReservationSpecification property is set
internal bool IsSetCapacityReservationSpecification()
{
return this._capacityReservationSpecification != null;
}
///
/// Gets and sets the property CpuOptions.
///
/// The CPU options for the instance. For more information, see Optimizing
/// CPU Options in the Amazon Elastic Compute Cloud User Guide.
///
///
public LaunchTemplateCpuOptionsRequest CpuOptions
{
get { return this._cpuOptions; }
set { this._cpuOptions = value; }
}
// Check to see if CpuOptions property is set
internal bool IsSetCpuOptions()
{
return this._cpuOptions != null;
}
///
/// Gets and sets the property CreditSpecification.
///
/// The credit option for CPU usage of the instance. Valid only for T instances.
///
///
public CreditSpecificationRequest CreditSpecification
{
get { return this._creditSpecification; }
set { this._creditSpecification = value; }
}
// Check to see if CreditSpecification property is set
internal bool IsSetCreditSpecification()
{
return this._creditSpecification != null;
}
///
/// Gets and sets the property DisableApiStop.
///
/// Indicates whether to enable the instance for stop protection. For more information,
/// see Stop
/// protection in the Amazon Elastic Compute Cloud User Guide.
///
///
public bool DisableApiStop
{
get { return this._disableApiStop.GetValueOrDefault(); }
set { this._disableApiStop = value; }
}
// Check to see if DisableApiStop property is set
internal bool IsSetDisableApiStop()
{
return this._disableApiStop.HasValue;
}
///
/// Gets and sets the property DisableApiTermination.
///
/// If you set this parameter to true
, you can't terminate the instance using
/// the Amazon EC2 console, CLI, or API; otherwise, you can. To change this attribute
/// after launch, use ModifyInstanceAttribute.
/// Alternatively, if you set InstanceInitiatedShutdownBehavior
to terminate
,
/// you can terminate the instance by running the shutdown command from the instance.
///
///
public bool DisableApiTermination
{
get { return this._disableApiTermination.GetValueOrDefault(); }
set { this._disableApiTermination = value; }
}
// Check to see if DisableApiTermination property is set
internal bool IsSetDisableApiTermination()
{
return this._disableApiTermination.HasValue;
}
///
/// Gets and sets the property EbsOptimized.
///
/// Indicates whether the instance is optimized for Amazon EBS I/O. This optimization
/// provides dedicated throughput to Amazon EBS and an optimized configuration stack to
/// provide optimal Amazon EBS I/O performance. This optimization isn't available with
/// all instance types. Additional usage charges apply when using an EBS-optimized instance.
///
///
public bool EbsOptimized
{
get { return this._ebsOptimized.GetValueOrDefault(); }
set { this._ebsOptimized = value; }
}
// Check to see if EbsOptimized property is set
internal bool IsSetEbsOptimized()
{
return this._ebsOptimized.HasValue;
}
///
/// Gets and sets the property ElasticGpuSpecifications.
///
/// An elastic GPU to associate with the instance.
///
///
public List ElasticGpuSpecifications
{
get { return this._elasticGpuSpecifications; }
set { this._elasticGpuSpecifications = value; }
}
// Check to see if ElasticGpuSpecifications property is set
internal bool IsSetElasticGpuSpecifications()
{
return this._elasticGpuSpecifications != null && this._elasticGpuSpecifications.Count > 0;
}
///
/// Gets and sets the property ElasticInferenceAccelerators.
///
/// The elastic inference accelerator for the instance.
///
///
public List ElasticInferenceAccelerators
{
get { return this._elasticInferenceAccelerators; }
set { this._elasticInferenceAccelerators = value; }
}
// Check to see if ElasticInferenceAccelerators property is set
internal bool IsSetElasticInferenceAccelerators()
{
return this._elasticInferenceAccelerators != null && this._elasticInferenceAccelerators.Count > 0;
}
///
/// Gets and sets the property EnclaveOptions.
///
/// Indicates whether the instance is enabled for Amazon Web Services Nitro Enclaves.
/// For more information, see
/// What is Amazon Web Services Nitro Enclaves? in the Amazon Web Services Nitro
/// Enclaves User Guide.
///
///
///
/// You can't enable Amazon Web Services Nitro Enclaves and hibernation on the same instance.
///
///
public LaunchTemplateEnclaveOptionsRequest EnclaveOptions
{
get { return this._enclaveOptions; }
set { this._enclaveOptions = value; }
}
// Check to see if EnclaveOptions property is set
internal bool IsSetEnclaveOptions()
{
return this._enclaveOptions != null;
}
///
/// Gets and sets the property HibernationOptions.
///
/// Indicates whether an instance is enabled for hibernation. This parameter is valid
/// only if the instance meets the hibernation
/// prerequisites. For more information, see Hibernate
/// your instance in the Amazon Elastic Compute Cloud User Guide.
///
///
public LaunchTemplateHibernationOptionsRequest HibernationOptions
{
get { return this._hibernationOptions; }
set { this._hibernationOptions = value; }
}
// Check to see if HibernationOptions property is set
internal bool IsSetHibernationOptions()
{
return this._hibernationOptions != null;
}
///
/// Gets and sets the property IamInstanceProfile.
///
/// The name or Amazon Resource Name (ARN) of an IAM instance profile.
///
///
public LaunchTemplateIamInstanceProfileSpecificationRequest IamInstanceProfile
{
get { return this._iamInstanceProfile; }
set { this._iamInstanceProfile = value; }
}
// Check to see if IamInstanceProfile property is set
internal bool IsSetIamInstanceProfile()
{
return this._iamInstanceProfile != null;
}
///
/// Gets and sets the property ImageId.
///
/// The ID of the AMI. Alternatively, you can specify a Systems Manager parameter, which
/// will resolve to an AMI ID on launch.
///
///
///
/// Valid formats:
///
/// -
///
///
ami-17characters00000
///
/// -
///
///
resolve:ssm:parameter-name
///
/// -
///
///
resolve:ssm:parameter-name:version-number
///
/// -
///
///
resolve:ssm:parameter-name:label
///
/// -
///
///
resolve:ssm:public-parameter
///
///
///
/// Currently, EC2 Fleet and Spot Fleet do not support specifying a Systems Manager parameter.
/// If the launch template will be used by an EC2 Fleet or Spot Fleet, you must specify
/// the AMI ID.
///
///
///
/// For more information, see Use
/// a Systems Manager parameter instead of an AMI ID in the Amazon Elastic Compute
/// Cloud User Guide.
///
///
public string ImageId
{
get { return this._imageId; }
set { this._imageId = value; }
}
// Check to see if ImageId property is set
internal bool IsSetImageId()
{
return this._imageId != null;
}
///
/// Gets and sets the property InstanceInitiatedShutdownBehavior.
///
/// Indicates whether an instance stops or terminates when you initiate shutdown from
/// the instance (using the operating system command for system shutdown).
///
///
///
/// Default: stop
///
///
public ShutdownBehavior InstanceInitiatedShutdownBehavior
{
get { return this._instanceInitiatedShutdownBehavior; }
set { this._instanceInitiatedShutdownBehavior = value; }
}
// Check to see if InstanceInitiatedShutdownBehavior property is set
internal bool IsSetInstanceInitiatedShutdownBehavior()
{
return this._instanceInitiatedShutdownBehavior != null;
}
///
/// Gets and sets the property InstanceMarketOptions.
///
/// The market (purchasing) option for the instances.
///
///
public LaunchTemplateInstanceMarketOptionsRequest InstanceMarketOptions
{
get { return this._instanceMarketOptions; }
set { this._instanceMarketOptions = value; }
}
// Check to see if InstanceMarketOptions property is set
internal bool IsSetInstanceMarketOptions()
{
return this._instanceMarketOptions != null;
}
///
/// Gets and sets the property InstanceRequirements.
///
/// The attributes for the instance types. When you specify instance attributes, Amazon
/// EC2 will identify instance types with these attributes.
///
///
///
/// You must specify VCpuCount
and MemoryMiB
. All other attributes
/// are optional. Any unspecified optional attribute is set to its default.
///
///
///
/// When you specify multiple attributes, you get instance types that satisfy all of the
/// specified attributes. If you specify multiple values for an attribute, you get instance
/// types that satisfy any of the specified values.
///
///
///
/// To limit the list of instance types from which Amazon EC2 can identify matching instance
/// types, you can use one of the following parameters, but not both in the same request:
///
/// -
///
///
AllowedInstanceTypes
- The instance types to include in the list. All
/// other instance types are ignored, even if they match your specified attributes.
///
/// -
///
///
ExcludedInstanceTypes
- The instance types to exclude from the list,
/// even if they match your specified attributes.
///
///
///
/// If you specify InstanceRequirements
, you can't specify InstanceType
.
///
///
///
/// Attribute-based instance type selection is only supported when using Auto Scaling
/// groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch
/// template in the launch
/// instance wizard, or with the RunInstances
/// API or AWS::EC2::Instance
/// Amazon Web Services CloudFormation resource, you can't specify InstanceRequirements
.
///
///
///
/// For more information, see Attribute-based
/// instance type selection for EC2 Fleet, Attribute-based
/// instance type selection for Spot Fleet, and Spot
/// placement score in the Amazon EC2 User Guide.
///
///
public InstanceRequirementsRequest InstanceRequirements
{
get { return this._instanceRequirements; }
set { this._instanceRequirements = value; }
}
// Check to see if InstanceRequirements property is set
internal bool IsSetInstanceRequirements()
{
return this._instanceRequirements != null;
}
///
/// Gets and sets the property InstanceType.
///
/// The instance type. For more information, see Instance
/// types in the Amazon Elastic Compute Cloud User Guide.
///
///
///
/// If you specify InstanceType
, you can't specify InstanceRequirements
.
///
///
public InstanceType InstanceType
{
get { return this._instanceType; }
set { this._instanceType = value; }
}
// Check to see if InstanceType property is set
internal bool IsSetInstanceType()
{
return this._instanceType != null;
}
///
/// Gets and sets the property KernelId.
///
/// The ID of the kernel.
///
///
///
/// We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information,
/// see User
/// provided kernels in the Amazon Elastic Compute Cloud User Guide.
///
///
///
public string KernelId
{
get { return this._kernelId; }
set { this._kernelId = value; }
}
// Check to see if KernelId property is set
internal bool IsSetKernelId()
{
return this._kernelId != null;
}
///
/// Gets and sets the property KeyName.
///
/// The name of the key pair. You can create a key pair using CreateKeyPair
/// or ImportKeyPair.
///
///
///
/// If you do not specify a key pair, you can't connect to the instance unless you choose
/// an AMI that is configured to allow users another way to log in.
///
///
///
public string KeyName
{
get { return this._keyName; }
set { this._keyName = value; }
}
// Check to see if KeyName property is set
internal bool IsSetKeyName()
{
return this._keyName != null;
}
///
/// Gets and sets the property LicenseSpecifications.
///
/// The license configurations.
///
///
public List LicenseSpecifications
{
get { return this._licenseSpecifications; }
set { this._licenseSpecifications = value; }
}
// Check to see if LicenseSpecifications property is set
internal bool IsSetLicenseSpecifications()
{
return this._licenseSpecifications != null && this._licenseSpecifications.Count > 0;
}
///
/// Gets and sets the property MaintenanceOptions.
///
/// The maintenance options for the instance.
///
///
public LaunchTemplateInstanceMaintenanceOptionsRequest MaintenanceOptions
{
get { return this._maintenanceOptions; }
set { this._maintenanceOptions = value; }
}
// Check to see if MaintenanceOptions property is set
internal bool IsSetMaintenanceOptions()
{
return this._maintenanceOptions != null;
}
///
/// Gets and sets the property MetadataOptions.
///
/// The metadata options for the instance. For more information, see Instance
/// metadata and user data in the Amazon Elastic Compute Cloud User Guide.
///
///
public LaunchTemplateInstanceMetadataOptionsRequest MetadataOptions
{
get { return this._metadataOptions; }
set { this._metadataOptions = value; }
}
// Check to see if MetadataOptions property is set
internal bool IsSetMetadataOptions()
{
return this._metadataOptions != null;
}
///
/// Gets and sets the property Monitoring.
///
/// The monitoring for the instance.
///
///
public LaunchTemplatesMonitoringRequest Monitoring
{
get { return this._monitoring; }
set { this._monitoring = value; }
}
// Check to see if Monitoring property is set
internal bool IsSetMonitoring()
{
return this._monitoring != null;
}
///
/// Gets and sets the property NetworkInterfaces.
///
/// One or more network interfaces. If you specify a network interface, you must specify
/// any security groups and subnets as part of the network interface.
///
///
public List NetworkInterfaces
{
get { return this._networkInterfaces; }
set { this._networkInterfaces = value; }
}
// Check to see if NetworkInterfaces property is set
internal bool IsSetNetworkInterfaces()
{
return this._networkInterfaces != null && this._networkInterfaces.Count > 0;
}
///
/// Gets and sets the property Placement.
///
/// The placement for the instance.
///
///
public LaunchTemplatePlacementRequest Placement
{
get { return this._placement; }
set { this._placement = value; }
}
// Check to see if Placement property is set
internal bool IsSetPlacement()
{
return this._placement != null;
}
///
/// Gets and sets the property PrivateDnsNameOptions.
///
/// The options for the instance hostname. The default values are inherited from the subnet.
///
///
public LaunchTemplatePrivateDnsNameOptionsRequest PrivateDnsNameOptions
{
get { return this._privateDnsNameOptions; }
set { this._privateDnsNameOptions = value; }
}
// Check to see if PrivateDnsNameOptions property is set
internal bool IsSetPrivateDnsNameOptions()
{
return this._privateDnsNameOptions != null;
}
///
/// Gets and sets the property RamDiskId.
///
/// The ID of the RAM disk.
///
///
///
/// We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information,
/// see User
/// provided kernels in the Amazon Elastic Compute Cloud User Guide.
///
///
///
public string RamDiskId
{
get { return this._ramDiskId; }
set { this._ramDiskId = value; }
}
// Check to see if RamDiskId property is set
internal bool IsSetRamDiskId()
{
return this._ramDiskId != null;
}
///
/// Gets and sets the property SecurityGroupIds.
///
/// One or more security group IDs. You can create a security group using CreateSecurityGroup.
/// You cannot specify both a security group ID and security name in the same request.
///
///
public List SecurityGroupIds
{
get { return this._securityGroupIds; }
set { this._securityGroupIds = value; }
}
// Check to see if SecurityGroupIds property is set
internal bool IsSetSecurityGroupIds()
{
return this._securityGroupIds != null && this._securityGroupIds.Count > 0;
}
///
/// Gets and sets the property SecurityGroups.
///
/// One or more security group names. For a nondefault VPC, you must use security group
/// IDs instead. You cannot specify both a security group ID and security name in the
/// same request.
///
///
public List SecurityGroups
{
get { return this._securityGroups; }
set { this._securityGroups = value; }
}
// Check to see if SecurityGroups property is set
internal bool IsSetSecurityGroups()
{
return this._securityGroups != null && this._securityGroups.Count > 0;
}
///
/// Gets and sets the property TagSpecifications.
///
/// The tags to apply to the resources that are created during instance launch.
///
///
///
/// You can specify tags for the following resources only:
///
/// -
///
/// Instances
///
///
-
///
/// Volumes
///
///
-
///
/// Elastic graphics
///
///
-
///
/// Spot Instance requests
///
///
-
///
/// Network interfaces
///
///
///
/// To tag a resource after it has been created, see CreateTags.
///
///
///
/// To tag the launch template itself, you must use the TagSpecification
/// parameter.
///
///
///
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 UserData.
///
/// The user data to make available to the instance. You must provide base64-encoded text.
/// User data is limited to 16 KB. For more information, see Run
/// commands on your Linux instance at launch (Linux) or Work
/// with instance user data (Windows) in the Amazon Elastic Compute Cloud User
/// Guide.
///
///
///
/// If you are creating the launch template for use with Batch, the user data must be
/// provided in the
/// MIME multi-part archive format. For more information, see Amazon
/// EC2 user data in launch templates in the Batch User Guide.
///
///
[AWSProperty(Sensitive=true)]
public string UserData
{
get { return this._userData; }
set { this._userData = value; }
}
// Check to see if UserData property is set
internal bool IsSetUserData()
{
return this._userData != null;
}
}
}