1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/ec2/EC2_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSStreamFwd.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/ec2/model/LaunchTemplateIamInstanceProfileSpecificationRequest.h>
11 #include <aws/core/utils/memory/stl/AWSVector.h>
12 #include <aws/ec2/model/InstanceType.h>
13 #include <aws/ec2/model/LaunchTemplatesMonitoringRequest.h>
14 #include <aws/ec2/model/LaunchTemplatePlacementRequest.h>
15 #include <aws/ec2/model/ShutdownBehavior.h>
16 #include <aws/ec2/model/LaunchTemplateInstanceMarketOptionsRequest.h>
17 #include <aws/ec2/model/CreditSpecificationRequest.h>
18 #include <aws/ec2/model/LaunchTemplateCpuOptionsRequest.h>
19 #include <aws/ec2/model/LaunchTemplateCapacityReservationSpecificationRequest.h>
20 #include <aws/ec2/model/LaunchTemplateHibernationOptionsRequest.h>
21 #include <aws/ec2/model/LaunchTemplateInstanceMetadataOptionsRequest.h>
22 #include <aws/ec2/model/LaunchTemplateEnclaveOptionsRequest.h>
23 #include <aws/ec2/model/LaunchTemplateBlockDeviceMappingRequest.h>
24 #include <aws/ec2/model/LaunchTemplateInstanceNetworkInterfaceSpecificationRequest.h>
25 #include <aws/ec2/model/LaunchTemplateTagSpecificationRequest.h>
26 #include <aws/ec2/model/ElasticGpuSpecification.h>
27 #include <aws/ec2/model/LaunchTemplateElasticInferenceAccelerator.h>
28 #include <aws/ec2/model/LaunchTemplateLicenseConfigurationRequest.h>
29 #include <utility>
30 
31 namespace Aws
32 {
33 namespace Utils
34 {
35 namespace Xml
36 {
37   class XmlNode;
38 } // namespace Xml
39 } // namespace Utils
40 namespace EC2
41 {
42 namespace Model
43 {
44 
45   /**
46    * <p>The information to include in the launch template.</p><p><h3>See Also:</h3>
47    * <a
48    * href="http://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestLaunchTemplateData">AWS
49    * API Reference</a></p>
50    */
51   class AWS_EC2_API RequestLaunchTemplateData
52   {
53   public:
54     RequestLaunchTemplateData();
55     RequestLaunchTemplateData(const Aws::Utils::Xml::XmlNode& xmlNode);
56     RequestLaunchTemplateData& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
57 
58     void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
59     void OutputToStream(Aws::OStream& oStream, const char* location) const;
60 
61 
62     /**
63      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
64      * instead of kernels and RAM disks. For more information, see <a
65      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
66      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
67      *
68      */
GetKernelId()69     inline const Aws::String& GetKernelId() const{ return m_kernelId; }
70 
71     /**
72      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
73      * instead of kernels and RAM disks. For more information, see <a
74      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
75      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
76      *
77      */
KernelIdHasBeenSet()78     inline bool KernelIdHasBeenSet() const { return m_kernelIdHasBeenSet; }
79 
80     /**
81      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
82      * instead of kernels and RAM disks. For more information, see <a
83      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
84      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
85      *
86      */
SetKernelId(const Aws::String & value)87     inline void SetKernelId(const Aws::String& value) { m_kernelIdHasBeenSet = true; m_kernelId = value; }
88 
89     /**
90      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
91      * instead of kernels and RAM disks. For more information, see <a
92      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
93      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
94      *
95      */
SetKernelId(Aws::String && value)96     inline void SetKernelId(Aws::String&& value) { m_kernelIdHasBeenSet = true; m_kernelId = std::move(value); }
97 
98     /**
99      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
100      * instead of kernels and RAM disks. For more information, see <a
101      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
102      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
103      *
104      */
SetKernelId(const char * value)105     inline void SetKernelId(const char* value) { m_kernelIdHasBeenSet = true; m_kernelId.assign(value); }
106 
107     /**
108      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
109      * instead of kernels and RAM disks. For more information, see <a
110      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
111      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
112      *
113      */
WithKernelId(const Aws::String & value)114     inline RequestLaunchTemplateData& WithKernelId(const Aws::String& value) { SetKernelId(value); return *this;}
115 
116     /**
117      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
118      * instead of kernels and RAM disks. For more information, see <a
119      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
120      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
121      *
122      */
WithKernelId(Aws::String && value)123     inline RequestLaunchTemplateData& WithKernelId(Aws::String&& value) { SetKernelId(std::move(value)); return *this;}
124 
125     /**
126      * <p>The ID of the kernel.</p>  <p>We recommend that you use PV-GRUB
127      * instead of kernels and RAM disks. For more information, see <a
128      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
129      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
130      *
131      */
WithKernelId(const char * value)132     inline RequestLaunchTemplateData& WithKernelId(const char* value) { SetKernelId(value); return *this;}
133 
134 
135     /**
136      * <p>Indicates whether the instance is optimized for Amazon EBS I/O. This
137      * optimization provides dedicated throughput to Amazon EBS and an optimized
138      * configuration stack to provide optimal Amazon EBS I/O performance. This
139      * optimization isn't available with all instance types. Additional usage charges
140      * apply when using an EBS-optimized instance.</p>
141      */
GetEbsOptimized()142     inline bool GetEbsOptimized() const{ return m_ebsOptimized; }
143 
144     /**
145      * <p>Indicates whether the instance is optimized for Amazon EBS I/O. This
146      * optimization provides dedicated throughput to Amazon EBS and an optimized
147      * configuration stack to provide optimal Amazon EBS I/O performance. This
148      * optimization isn't available with all instance types. Additional usage charges
149      * apply when using an EBS-optimized instance.</p>
150      */
EbsOptimizedHasBeenSet()151     inline bool EbsOptimizedHasBeenSet() const { return m_ebsOptimizedHasBeenSet; }
152 
153     /**
154      * <p>Indicates whether the instance is optimized for Amazon EBS I/O. This
155      * optimization provides dedicated throughput to Amazon EBS and an optimized
156      * configuration stack to provide optimal Amazon EBS I/O performance. This
157      * optimization isn't available with all instance types. Additional usage charges
158      * apply when using an EBS-optimized instance.</p>
159      */
SetEbsOptimized(bool value)160     inline void SetEbsOptimized(bool value) { m_ebsOptimizedHasBeenSet = true; m_ebsOptimized = value; }
161 
162     /**
163      * <p>Indicates whether the instance is optimized for Amazon EBS I/O. This
164      * optimization provides dedicated throughput to Amazon EBS and an optimized
165      * configuration stack to provide optimal Amazon EBS I/O performance. This
166      * optimization isn't available with all instance types. Additional usage charges
167      * apply when using an EBS-optimized instance.</p>
168      */
WithEbsOptimized(bool value)169     inline RequestLaunchTemplateData& WithEbsOptimized(bool value) { SetEbsOptimized(value); return *this;}
170 
171 
172     /**
173      * <p>The name or Amazon Resource Name (ARN) of an IAM instance profile.</p>
174      */
GetIamInstanceProfile()175     inline const LaunchTemplateIamInstanceProfileSpecificationRequest& GetIamInstanceProfile() const{ return m_iamInstanceProfile; }
176 
177     /**
178      * <p>The name or Amazon Resource Name (ARN) of an IAM instance profile.</p>
179      */
IamInstanceProfileHasBeenSet()180     inline bool IamInstanceProfileHasBeenSet() const { return m_iamInstanceProfileHasBeenSet; }
181 
182     /**
183      * <p>The name or Amazon Resource Name (ARN) of an IAM instance profile.</p>
184      */
SetIamInstanceProfile(const LaunchTemplateIamInstanceProfileSpecificationRequest & value)185     inline void SetIamInstanceProfile(const LaunchTemplateIamInstanceProfileSpecificationRequest& value) { m_iamInstanceProfileHasBeenSet = true; m_iamInstanceProfile = value; }
186 
187     /**
188      * <p>The name or Amazon Resource Name (ARN) of an IAM instance profile.</p>
189      */
SetIamInstanceProfile(LaunchTemplateIamInstanceProfileSpecificationRequest && value)190     inline void SetIamInstanceProfile(LaunchTemplateIamInstanceProfileSpecificationRequest&& value) { m_iamInstanceProfileHasBeenSet = true; m_iamInstanceProfile = std::move(value); }
191 
192     /**
193      * <p>The name or Amazon Resource Name (ARN) of an IAM instance profile.</p>
194      */
WithIamInstanceProfile(const LaunchTemplateIamInstanceProfileSpecificationRequest & value)195     inline RequestLaunchTemplateData& WithIamInstanceProfile(const LaunchTemplateIamInstanceProfileSpecificationRequest& value) { SetIamInstanceProfile(value); return *this;}
196 
197     /**
198      * <p>The name or Amazon Resource Name (ARN) of an IAM instance profile.</p>
199      */
WithIamInstanceProfile(LaunchTemplateIamInstanceProfileSpecificationRequest && value)200     inline RequestLaunchTemplateData& WithIamInstanceProfile(LaunchTemplateIamInstanceProfileSpecificationRequest&& value) { SetIamInstanceProfile(std::move(value)); return *this;}
201 
202 
203     /**
204      * <p>The block device mapping.</p>
205      */
GetBlockDeviceMappings()206     inline const Aws::Vector<LaunchTemplateBlockDeviceMappingRequest>& GetBlockDeviceMappings() const{ return m_blockDeviceMappings; }
207 
208     /**
209      * <p>The block device mapping.</p>
210      */
BlockDeviceMappingsHasBeenSet()211     inline bool BlockDeviceMappingsHasBeenSet() const { return m_blockDeviceMappingsHasBeenSet; }
212 
213     /**
214      * <p>The block device mapping.</p>
215      */
SetBlockDeviceMappings(const Aws::Vector<LaunchTemplateBlockDeviceMappingRequest> & value)216     inline void SetBlockDeviceMappings(const Aws::Vector<LaunchTemplateBlockDeviceMappingRequest>& value) { m_blockDeviceMappingsHasBeenSet = true; m_blockDeviceMappings = value; }
217 
218     /**
219      * <p>The block device mapping.</p>
220      */
SetBlockDeviceMappings(Aws::Vector<LaunchTemplateBlockDeviceMappingRequest> && value)221     inline void SetBlockDeviceMappings(Aws::Vector<LaunchTemplateBlockDeviceMappingRequest>&& value) { m_blockDeviceMappingsHasBeenSet = true; m_blockDeviceMappings = std::move(value); }
222 
223     /**
224      * <p>The block device mapping.</p>
225      */
WithBlockDeviceMappings(const Aws::Vector<LaunchTemplateBlockDeviceMappingRequest> & value)226     inline RequestLaunchTemplateData& WithBlockDeviceMappings(const Aws::Vector<LaunchTemplateBlockDeviceMappingRequest>& value) { SetBlockDeviceMappings(value); return *this;}
227 
228     /**
229      * <p>The block device mapping.</p>
230      */
WithBlockDeviceMappings(Aws::Vector<LaunchTemplateBlockDeviceMappingRequest> && value)231     inline RequestLaunchTemplateData& WithBlockDeviceMappings(Aws::Vector<LaunchTemplateBlockDeviceMappingRequest>&& value) { SetBlockDeviceMappings(std::move(value)); return *this;}
232 
233     /**
234      * <p>The block device mapping.</p>
235      */
AddBlockDeviceMappings(const LaunchTemplateBlockDeviceMappingRequest & value)236     inline RequestLaunchTemplateData& AddBlockDeviceMappings(const LaunchTemplateBlockDeviceMappingRequest& value) { m_blockDeviceMappingsHasBeenSet = true; m_blockDeviceMappings.push_back(value); return *this; }
237 
238     /**
239      * <p>The block device mapping.</p>
240      */
AddBlockDeviceMappings(LaunchTemplateBlockDeviceMappingRequest && value)241     inline RequestLaunchTemplateData& AddBlockDeviceMappings(LaunchTemplateBlockDeviceMappingRequest&& value) { m_blockDeviceMappingsHasBeenSet = true; m_blockDeviceMappings.push_back(std::move(value)); return *this; }
242 
243 
244     /**
245      * <p>One or more network interfaces. If you specify a network interface, you must
246      * specify any security groups and subnets as part of the network interface.</p>
247      */
GetNetworkInterfaces()248     inline const Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest>& GetNetworkInterfaces() const{ return m_networkInterfaces; }
249 
250     /**
251      * <p>One or more network interfaces. If you specify a network interface, you must
252      * specify any security groups and subnets as part of the network interface.</p>
253      */
NetworkInterfacesHasBeenSet()254     inline bool NetworkInterfacesHasBeenSet() const { return m_networkInterfacesHasBeenSet; }
255 
256     /**
257      * <p>One or more network interfaces. If you specify a network interface, you must
258      * specify any security groups and subnets as part of the network interface.</p>
259      */
SetNetworkInterfaces(const Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest> & value)260     inline void SetNetworkInterfaces(const Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest>& value) { m_networkInterfacesHasBeenSet = true; m_networkInterfaces = value; }
261 
262     /**
263      * <p>One or more network interfaces. If you specify a network interface, you must
264      * specify any security groups and subnets as part of the network interface.</p>
265      */
SetNetworkInterfaces(Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest> && value)266     inline void SetNetworkInterfaces(Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest>&& value) { m_networkInterfacesHasBeenSet = true; m_networkInterfaces = std::move(value); }
267 
268     /**
269      * <p>One or more network interfaces. If you specify a network interface, you must
270      * specify any security groups and subnets as part of the network interface.</p>
271      */
WithNetworkInterfaces(const Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest> & value)272     inline RequestLaunchTemplateData& WithNetworkInterfaces(const Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest>& value) { SetNetworkInterfaces(value); return *this;}
273 
274     /**
275      * <p>One or more network interfaces. If you specify a network interface, you must
276      * specify any security groups and subnets as part of the network interface.</p>
277      */
WithNetworkInterfaces(Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest> && value)278     inline RequestLaunchTemplateData& WithNetworkInterfaces(Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest>&& value) { SetNetworkInterfaces(std::move(value)); return *this;}
279 
280     /**
281      * <p>One or more network interfaces. If you specify a network interface, you must
282      * specify any security groups and subnets as part of the network interface.</p>
283      */
AddNetworkInterfaces(const LaunchTemplateInstanceNetworkInterfaceSpecificationRequest & value)284     inline RequestLaunchTemplateData& AddNetworkInterfaces(const LaunchTemplateInstanceNetworkInterfaceSpecificationRequest& value) { m_networkInterfacesHasBeenSet = true; m_networkInterfaces.push_back(value); return *this; }
285 
286     /**
287      * <p>One or more network interfaces. If you specify a network interface, you must
288      * specify any security groups and subnets as part of the network interface.</p>
289      */
AddNetworkInterfaces(LaunchTemplateInstanceNetworkInterfaceSpecificationRequest && value)290     inline RequestLaunchTemplateData& AddNetworkInterfaces(LaunchTemplateInstanceNetworkInterfaceSpecificationRequest&& value) { m_networkInterfacesHasBeenSet = true; m_networkInterfaces.push_back(std::move(value)); return *this; }
291 
292 
293     /**
294      * <p>The ID of the AMI.</p>
295      */
GetImageId()296     inline const Aws::String& GetImageId() const{ return m_imageId; }
297 
298     /**
299      * <p>The ID of the AMI.</p>
300      */
ImageIdHasBeenSet()301     inline bool ImageIdHasBeenSet() const { return m_imageIdHasBeenSet; }
302 
303     /**
304      * <p>The ID of the AMI.</p>
305      */
SetImageId(const Aws::String & value)306     inline void SetImageId(const Aws::String& value) { m_imageIdHasBeenSet = true; m_imageId = value; }
307 
308     /**
309      * <p>The ID of the AMI.</p>
310      */
SetImageId(Aws::String && value)311     inline void SetImageId(Aws::String&& value) { m_imageIdHasBeenSet = true; m_imageId = std::move(value); }
312 
313     /**
314      * <p>The ID of the AMI.</p>
315      */
SetImageId(const char * value)316     inline void SetImageId(const char* value) { m_imageIdHasBeenSet = true; m_imageId.assign(value); }
317 
318     /**
319      * <p>The ID of the AMI.</p>
320      */
WithImageId(const Aws::String & value)321     inline RequestLaunchTemplateData& WithImageId(const Aws::String& value) { SetImageId(value); return *this;}
322 
323     /**
324      * <p>The ID of the AMI.</p>
325      */
WithImageId(Aws::String && value)326     inline RequestLaunchTemplateData& WithImageId(Aws::String&& value) { SetImageId(std::move(value)); return *this;}
327 
328     /**
329      * <p>The ID of the AMI.</p>
330      */
WithImageId(const char * value)331     inline RequestLaunchTemplateData& WithImageId(const char* value) { SetImageId(value); return *this;}
332 
333 
334     /**
335      * <p>The instance type. For more information, see <a
336      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">Instance
337      * Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
338      */
GetInstanceType()339     inline const InstanceType& GetInstanceType() const{ return m_instanceType; }
340 
341     /**
342      * <p>The instance type. For more information, see <a
343      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">Instance
344      * Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
345      */
InstanceTypeHasBeenSet()346     inline bool InstanceTypeHasBeenSet() const { return m_instanceTypeHasBeenSet; }
347 
348     /**
349      * <p>The instance type. For more information, see <a
350      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">Instance
351      * Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
352      */
SetInstanceType(const InstanceType & value)353     inline void SetInstanceType(const InstanceType& value) { m_instanceTypeHasBeenSet = true; m_instanceType = value; }
354 
355     /**
356      * <p>The instance type. For more information, see <a
357      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">Instance
358      * Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
359      */
SetInstanceType(InstanceType && value)360     inline void SetInstanceType(InstanceType&& value) { m_instanceTypeHasBeenSet = true; m_instanceType = std::move(value); }
361 
362     /**
363      * <p>The instance type. For more information, see <a
364      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">Instance
365      * Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
366      */
WithInstanceType(const InstanceType & value)367     inline RequestLaunchTemplateData& WithInstanceType(const InstanceType& value) { SetInstanceType(value); return *this;}
368 
369     /**
370      * <p>The instance type. For more information, see <a
371      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">Instance
372      * Types</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
373      */
WithInstanceType(InstanceType && value)374     inline RequestLaunchTemplateData& WithInstanceType(InstanceType&& value) { SetInstanceType(std::move(value)); return *this;}
375 
376 
377     /**
378      * <p>The name of the key pair. You can create a key pair using <a
379      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
380      * or <a
381      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
382      *  <p>If you do not specify a key pair, you can't connect to the
383      * instance unless you choose an AMI that is configured to allow users another way
384      * to log in.</p>
385      */
GetKeyName()386     inline const Aws::String& GetKeyName() const{ return m_keyName; }
387 
388     /**
389      * <p>The name of the key pair. You can create a key pair using <a
390      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
391      * or <a
392      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
393      *  <p>If you do not specify a key pair, you can't connect to the
394      * instance unless you choose an AMI that is configured to allow users another way
395      * to log in.</p>
396      */
KeyNameHasBeenSet()397     inline bool KeyNameHasBeenSet() const { return m_keyNameHasBeenSet; }
398 
399     /**
400      * <p>The name of the key pair. You can create a key pair using <a
401      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
402      * or <a
403      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
404      *  <p>If you do not specify a key pair, you can't connect to the
405      * instance unless you choose an AMI that is configured to allow users another way
406      * to log in.</p>
407      */
SetKeyName(const Aws::String & value)408     inline void SetKeyName(const Aws::String& value) { m_keyNameHasBeenSet = true; m_keyName = value; }
409 
410     /**
411      * <p>The name of the key pair. You can create a key pair using <a
412      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
413      * or <a
414      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
415      *  <p>If you do not specify a key pair, you can't connect to the
416      * instance unless you choose an AMI that is configured to allow users another way
417      * to log in.</p>
418      */
SetKeyName(Aws::String && value)419     inline void SetKeyName(Aws::String&& value) { m_keyNameHasBeenSet = true; m_keyName = std::move(value); }
420 
421     /**
422      * <p>The name of the key pair. You can create a key pair using <a
423      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
424      * or <a
425      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
426      *  <p>If you do not specify a key pair, you can't connect to the
427      * instance unless you choose an AMI that is configured to allow users another way
428      * to log in.</p>
429      */
SetKeyName(const char * value)430     inline void SetKeyName(const char* value) { m_keyNameHasBeenSet = true; m_keyName.assign(value); }
431 
432     /**
433      * <p>The name of the key pair. You can create a key pair using <a
434      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
435      * or <a
436      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
437      *  <p>If you do not specify a key pair, you can't connect to the
438      * instance unless you choose an AMI that is configured to allow users another way
439      * to log in.</p>
440      */
WithKeyName(const Aws::String & value)441     inline RequestLaunchTemplateData& WithKeyName(const Aws::String& value) { SetKeyName(value); return *this;}
442 
443     /**
444      * <p>The name of the key pair. You can create a key pair using <a
445      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
446      * or <a
447      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
448      *  <p>If you do not specify a key pair, you can't connect to the
449      * instance unless you choose an AMI that is configured to allow users another way
450      * to log in.</p>
451      */
WithKeyName(Aws::String && value)452     inline RequestLaunchTemplateData& WithKeyName(Aws::String&& value) { SetKeyName(std::move(value)); return *this;}
453 
454     /**
455      * <p>The name of the key pair. You can create a key pair using <a
456      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html">CreateKeyPair</a>
457      * or <a
458      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html">ImportKeyPair</a>.</p>
459      *  <p>If you do not specify a key pair, you can't connect to the
460      * instance unless you choose an AMI that is configured to allow users another way
461      * to log in.</p>
462      */
WithKeyName(const char * value)463     inline RequestLaunchTemplateData& WithKeyName(const char* value) { SetKeyName(value); return *this;}
464 
465 
466     /**
467      * <p>The monitoring for the instance.</p>
468      */
GetMonitoring()469     inline const LaunchTemplatesMonitoringRequest& GetMonitoring() const{ return m_monitoring; }
470 
471     /**
472      * <p>The monitoring for the instance.</p>
473      */
MonitoringHasBeenSet()474     inline bool MonitoringHasBeenSet() const { return m_monitoringHasBeenSet; }
475 
476     /**
477      * <p>The monitoring for the instance.</p>
478      */
SetMonitoring(const LaunchTemplatesMonitoringRequest & value)479     inline void SetMonitoring(const LaunchTemplatesMonitoringRequest& value) { m_monitoringHasBeenSet = true; m_monitoring = value; }
480 
481     /**
482      * <p>The monitoring for the instance.</p>
483      */
SetMonitoring(LaunchTemplatesMonitoringRequest && value)484     inline void SetMonitoring(LaunchTemplatesMonitoringRequest&& value) { m_monitoringHasBeenSet = true; m_monitoring = std::move(value); }
485 
486     /**
487      * <p>The monitoring for the instance.</p>
488      */
WithMonitoring(const LaunchTemplatesMonitoringRequest & value)489     inline RequestLaunchTemplateData& WithMonitoring(const LaunchTemplatesMonitoringRequest& value) { SetMonitoring(value); return *this;}
490 
491     /**
492      * <p>The monitoring for the instance.</p>
493      */
WithMonitoring(LaunchTemplatesMonitoringRequest && value)494     inline RequestLaunchTemplateData& WithMonitoring(LaunchTemplatesMonitoringRequest&& value) { SetMonitoring(std::move(value)); return *this;}
495 
496 
497     /**
498      * <p>The placement for the instance.</p>
499      */
GetPlacement()500     inline const LaunchTemplatePlacementRequest& GetPlacement() const{ return m_placement; }
501 
502     /**
503      * <p>The placement for the instance.</p>
504      */
PlacementHasBeenSet()505     inline bool PlacementHasBeenSet() const { return m_placementHasBeenSet; }
506 
507     /**
508      * <p>The placement for the instance.</p>
509      */
SetPlacement(const LaunchTemplatePlacementRequest & value)510     inline void SetPlacement(const LaunchTemplatePlacementRequest& value) { m_placementHasBeenSet = true; m_placement = value; }
511 
512     /**
513      * <p>The placement for the instance.</p>
514      */
SetPlacement(LaunchTemplatePlacementRequest && value)515     inline void SetPlacement(LaunchTemplatePlacementRequest&& value) { m_placementHasBeenSet = true; m_placement = std::move(value); }
516 
517     /**
518      * <p>The placement for the instance.</p>
519      */
WithPlacement(const LaunchTemplatePlacementRequest & value)520     inline RequestLaunchTemplateData& WithPlacement(const LaunchTemplatePlacementRequest& value) { SetPlacement(value); return *this;}
521 
522     /**
523      * <p>The placement for the instance.</p>
524      */
WithPlacement(LaunchTemplatePlacementRequest && value)525     inline RequestLaunchTemplateData& WithPlacement(LaunchTemplatePlacementRequest&& value) { SetPlacement(std::move(value)); return *this;}
526 
527 
528     /**
529      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
530      * instead of kernels and RAM disks. For more information, see <a
531      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
532      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
533      *
534      */
GetRamDiskId()535     inline const Aws::String& GetRamDiskId() const{ return m_ramDiskId; }
536 
537     /**
538      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
539      * instead of kernels and RAM disks. For more information, see <a
540      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
541      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
542      *
543      */
RamDiskIdHasBeenSet()544     inline bool RamDiskIdHasBeenSet() const { return m_ramDiskIdHasBeenSet; }
545 
546     /**
547      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
548      * instead of kernels and RAM disks. For more information, see <a
549      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
550      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
551      *
552      */
SetRamDiskId(const Aws::String & value)553     inline void SetRamDiskId(const Aws::String& value) { m_ramDiskIdHasBeenSet = true; m_ramDiskId = value; }
554 
555     /**
556      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
557      * instead of kernels and RAM disks. For more information, see <a
558      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
559      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
560      *
561      */
SetRamDiskId(Aws::String && value)562     inline void SetRamDiskId(Aws::String&& value) { m_ramDiskIdHasBeenSet = true; m_ramDiskId = std::move(value); }
563 
564     /**
565      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
566      * instead of kernels and RAM disks. For more information, see <a
567      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
568      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
569      *
570      */
SetRamDiskId(const char * value)571     inline void SetRamDiskId(const char* value) { m_ramDiskIdHasBeenSet = true; m_ramDiskId.assign(value); }
572 
573     /**
574      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
575      * instead of kernels and RAM disks. For more information, see <a
576      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
577      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
578      *
579      */
WithRamDiskId(const Aws::String & value)580     inline RequestLaunchTemplateData& WithRamDiskId(const Aws::String& value) { SetRamDiskId(value); return *this;}
581 
582     /**
583      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
584      * instead of kernels and RAM disks. For more information, see <a
585      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
586      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
587      *
588      */
WithRamDiskId(Aws::String && value)589     inline RequestLaunchTemplateData& WithRamDiskId(Aws::String&& value) { SetRamDiskId(std::move(value)); return *this;}
590 
591     /**
592      * <p>The ID of the RAM disk.</p>  <p>We recommend that you use PV-GRUB
593      * instead of kernels and RAM disks. For more information, see <a
594      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html">User
595      * Provided Kernels</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
596      *
597      */
WithRamDiskId(const char * value)598     inline RequestLaunchTemplateData& WithRamDiskId(const char* value) { SetRamDiskId(value); return *this;}
599 
600 
601     /**
602      * <p>If you set this parameter to <code>true</code>, you can't terminate the
603      * instance using the Amazon EC2 console, CLI, or API; otherwise, you can. To
604      * change this attribute after launch, use <a
605      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html">ModifyInstanceAttribute</a>.
606      * Alternatively, if you set <code>InstanceInitiatedShutdownBehavior</code> to
607      * <code>terminate</code>, you can terminate the instance by running the shutdown
608      * command from the instance.</p>
609      */
GetDisableApiTermination()610     inline bool GetDisableApiTermination() const{ return m_disableApiTermination; }
611 
612     /**
613      * <p>If you set this parameter to <code>true</code>, you can't terminate the
614      * instance using the Amazon EC2 console, CLI, or API; otherwise, you can. To
615      * change this attribute after launch, use <a
616      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html">ModifyInstanceAttribute</a>.
617      * Alternatively, if you set <code>InstanceInitiatedShutdownBehavior</code> to
618      * <code>terminate</code>, you can terminate the instance by running the shutdown
619      * command from the instance.</p>
620      */
DisableApiTerminationHasBeenSet()621     inline bool DisableApiTerminationHasBeenSet() const { return m_disableApiTerminationHasBeenSet; }
622 
623     /**
624      * <p>If you set this parameter to <code>true</code>, you can't terminate the
625      * instance using the Amazon EC2 console, CLI, or API; otherwise, you can. To
626      * change this attribute after launch, use <a
627      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html">ModifyInstanceAttribute</a>.
628      * Alternatively, if you set <code>InstanceInitiatedShutdownBehavior</code> to
629      * <code>terminate</code>, you can terminate the instance by running the shutdown
630      * command from the instance.</p>
631      */
SetDisableApiTermination(bool value)632     inline void SetDisableApiTermination(bool value) { m_disableApiTerminationHasBeenSet = true; m_disableApiTermination = value; }
633 
634     /**
635      * <p>If you set this parameter to <code>true</code>, you can't terminate the
636      * instance using the Amazon EC2 console, CLI, or API; otherwise, you can. To
637      * change this attribute after launch, use <a
638      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html">ModifyInstanceAttribute</a>.
639      * Alternatively, if you set <code>InstanceInitiatedShutdownBehavior</code> to
640      * <code>terminate</code>, you can terminate the instance by running the shutdown
641      * command from the instance.</p>
642      */
WithDisableApiTermination(bool value)643     inline RequestLaunchTemplateData& WithDisableApiTermination(bool value) { SetDisableApiTermination(value); return *this;}
644 
645 
646     /**
647      * <p>Indicates whether an instance stops or terminates when you initiate shutdown
648      * from the instance (using the operating system command for system shutdown).</p>
649      * <p>Default: <code>stop</code> </p>
650      */
GetInstanceInitiatedShutdownBehavior()651     inline const ShutdownBehavior& GetInstanceInitiatedShutdownBehavior() const{ return m_instanceInitiatedShutdownBehavior; }
652 
653     /**
654      * <p>Indicates whether an instance stops or terminates when you initiate shutdown
655      * from the instance (using the operating system command for system shutdown).</p>
656      * <p>Default: <code>stop</code> </p>
657      */
InstanceInitiatedShutdownBehaviorHasBeenSet()658     inline bool InstanceInitiatedShutdownBehaviorHasBeenSet() const { return m_instanceInitiatedShutdownBehaviorHasBeenSet; }
659 
660     /**
661      * <p>Indicates whether an instance stops or terminates when you initiate shutdown
662      * from the instance (using the operating system command for system shutdown).</p>
663      * <p>Default: <code>stop</code> </p>
664      */
SetInstanceInitiatedShutdownBehavior(const ShutdownBehavior & value)665     inline void SetInstanceInitiatedShutdownBehavior(const ShutdownBehavior& value) { m_instanceInitiatedShutdownBehaviorHasBeenSet = true; m_instanceInitiatedShutdownBehavior = value; }
666 
667     /**
668      * <p>Indicates whether an instance stops or terminates when you initiate shutdown
669      * from the instance (using the operating system command for system shutdown).</p>
670      * <p>Default: <code>stop</code> </p>
671      */
SetInstanceInitiatedShutdownBehavior(ShutdownBehavior && value)672     inline void SetInstanceInitiatedShutdownBehavior(ShutdownBehavior&& value) { m_instanceInitiatedShutdownBehaviorHasBeenSet = true; m_instanceInitiatedShutdownBehavior = std::move(value); }
673 
674     /**
675      * <p>Indicates whether an instance stops or terminates when you initiate shutdown
676      * from the instance (using the operating system command for system shutdown).</p>
677      * <p>Default: <code>stop</code> </p>
678      */
WithInstanceInitiatedShutdownBehavior(const ShutdownBehavior & value)679     inline RequestLaunchTemplateData& WithInstanceInitiatedShutdownBehavior(const ShutdownBehavior& value) { SetInstanceInitiatedShutdownBehavior(value); return *this;}
680 
681     /**
682      * <p>Indicates whether an instance stops or terminates when you initiate shutdown
683      * from the instance (using the operating system command for system shutdown).</p>
684      * <p>Default: <code>stop</code> </p>
685      */
WithInstanceInitiatedShutdownBehavior(ShutdownBehavior && value)686     inline RequestLaunchTemplateData& WithInstanceInitiatedShutdownBehavior(ShutdownBehavior&& value) { SetInstanceInitiatedShutdownBehavior(std::move(value)); return *this;}
687 
688 
689     /**
690      * <p>The user data to make available to the instance. You must provide
691      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
692      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
693      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
694      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
695      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
696      * with Batch, the user data must be provided in the <a
697      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
698      * MIME multi-part archive format</a>. For more information, see <a
699      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
700      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
701      */
GetUserData()702     inline const Aws::String& GetUserData() const{ return m_userData; }
703 
704     /**
705      * <p>The user data to make available to the instance. You must provide
706      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
707      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
708      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
709      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
710      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
711      * with Batch, the user data must be provided in the <a
712      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
713      * MIME multi-part archive format</a>. For more information, see <a
714      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
715      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
716      */
UserDataHasBeenSet()717     inline bool UserDataHasBeenSet() const { return m_userDataHasBeenSet; }
718 
719     /**
720      * <p>The user data to make available to the instance. You must provide
721      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
722      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
723      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
724      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
725      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
726      * with Batch, the user data must be provided in the <a
727      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
728      * MIME multi-part archive format</a>. For more information, see <a
729      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
730      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
731      */
SetUserData(const Aws::String & value)732     inline void SetUserData(const Aws::String& value) { m_userDataHasBeenSet = true; m_userData = value; }
733 
734     /**
735      * <p>The user data to make available to the instance. You must provide
736      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
737      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
738      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
739      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
740      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
741      * with Batch, the user data must be provided in the <a
742      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
743      * MIME multi-part archive format</a>. For more information, see <a
744      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
745      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
746      */
SetUserData(Aws::String && value)747     inline void SetUserData(Aws::String&& value) { m_userDataHasBeenSet = true; m_userData = std::move(value); }
748 
749     /**
750      * <p>The user data to make available to the instance. You must provide
751      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
752      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
753      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
754      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
755      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
756      * with Batch, the user data must be provided in the <a
757      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
758      * MIME multi-part archive format</a>. For more information, see <a
759      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
760      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
761      */
SetUserData(const char * value)762     inline void SetUserData(const char* value) { m_userDataHasBeenSet = true; m_userData.assign(value); }
763 
764     /**
765      * <p>The user data to make available to the instance. You must provide
766      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
767      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
768      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
769      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
770      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
771      * with Batch, the user data must be provided in the <a
772      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
773      * MIME multi-part archive format</a>. For more information, see <a
774      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
775      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
776      */
WithUserData(const Aws::String & value)777     inline RequestLaunchTemplateData& WithUserData(const Aws::String& value) { SetUserData(value); return *this;}
778 
779     /**
780      * <p>The user data to make available to the instance. You must provide
781      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
782      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
783      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
784      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
785      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
786      * with Batch, the user data must be provided in the <a
787      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
788      * MIME multi-part archive format</a>. For more information, see <a
789      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
790      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
791      */
WithUserData(Aws::String && value)792     inline RequestLaunchTemplateData& WithUserData(Aws::String&& value) { SetUserData(std::move(value)); return *this;}
793 
794     /**
795      * <p>The user data to make available to the instance. You must provide
796      * base64-encoded text. User data is limited to 16 KB. For more information, see <a
797      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html">Running
798      * Commands on Your Linux Instance at Launch</a> (Linux) or <a
799      * href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data">Adding
800      * User Data</a> (Windows).</p> <p>If you are creating the launch template for use
801      * with Batch, the user data must be provided in the <a
802      * href="https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive">
803      * MIME multi-part archive format</a>. For more information, see <a
804      * href="https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html">Amazon
805      * EC2 user data in launch templates</a> in the <i>Batch User Guide</i>.</p>
806      */
WithUserData(const char * value)807     inline RequestLaunchTemplateData& WithUserData(const char* value) { SetUserData(value); return *this;}
808 
809 
810     /**
811      * <p>The tags to apply to the resources during launch. You can only tag instances
812      * and volumes on launch. The specified tags are applied to all instances or
813      * volumes that are created during launch. To tag a resource after it has been
814      * created, see <a
815      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
816      */
GetTagSpecifications()817     inline const Aws::Vector<LaunchTemplateTagSpecificationRequest>& GetTagSpecifications() const{ return m_tagSpecifications; }
818 
819     /**
820      * <p>The tags to apply to the resources during launch. You can only tag instances
821      * and volumes on launch. The specified tags are applied to all instances or
822      * volumes that are created during launch. To tag a resource after it has been
823      * created, see <a
824      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
825      */
TagSpecificationsHasBeenSet()826     inline bool TagSpecificationsHasBeenSet() const { return m_tagSpecificationsHasBeenSet; }
827 
828     /**
829      * <p>The tags to apply to the resources during launch. You can only tag instances
830      * and volumes on launch. The specified tags are applied to all instances or
831      * volumes that are created during launch. To tag a resource after it has been
832      * created, see <a
833      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
834      */
SetTagSpecifications(const Aws::Vector<LaunchTemplateTagSpecificationRequest> & value)835     inline void SetTagSpecifications(const Aws::Vector<LaunchTemplateTagSpecificationRequest>& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications = value; }
836 
837     /**
838      * <p>The tags to apply to the resources during launch. You can only tag instances
839      * and volumes on launch. The specified tags are applied to all instances or
840      * volumes that are created during launch. To tag a resource after it has been
841      * created, see <a
842      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
843      */
SetTagSpecifications(Aws::Vector<LaunchTemplateTagSpecificationRequest> && value)844     inline void SetTagSpecifications(Aws::Vector<LaunchTemplateTagSpecificationRequest>&& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications = std::move(value); }
845 
846     /**
847      * <p>The tags to apply to the resources during launch. You can only tag instances
848      * and volumes on launch. The specified tags are applied to all instances or
849      * volumes that are created during launch. To tag a resource after it has been
850      * created, see <a
851      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
852      */
WithTagSpecifications(const Aws::Vector<LaunchTemplateTagSpecificationRequest> & value)853     inline RequestLaunchTemplateData& WithTagSpecifications(const Aws::Vector<LaunchTemplateTagSpecificationRequest>& value) { SetTagSpecifications(value); return *this;}
854 
855     /**
856      * <p>The tags to apply to the resources during launch. You can only tag instances
857      * and volumes on launch. The specified tags are applied to all instances or
858      * volumes that are created during launch. To tag a resource after it has been
859      * created, see <a
860      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
861      */
WithTagSpecifications(Aws::Vector<LaunchTemplateTagSpecificationRequest> && value)862     inline RequestLaunchTemplateData& WithTagSpecifications(Aws::Vector<LaunchTemplateTagSpecificationRequest>&& value) { SetTagSpecifications(std::move(value)); return *this;}
863 
864     /**
865      * <p>The tags to apply to the resources during launch. You can only tag instances
866      * and volumes on launch. The specified tags are applied to all instances or
867      * volumes that are created during launch. To tag a resource after it has been
868      * created, see <a
869      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
870      */
AddTagSpecifications(const LaunchTemplateTagSpecificationRequest & value)871     inline RequestLaunchTemplateData& AddTagSpecifications(const LaunchTemplateTagSpecificationRequest& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications.push_back(value); return *this; }
872 
873     /**
874      * <p>The tags to apply to the resources during launch. You can only tag instances
875      * and volumes on launch. The specified tags are applied to all instances or
876      * volumes that are created during launch. To tag a resource after it has been
877      * created, see <a
878      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
879      */
AddTagSpecifications(LaunchTemplateTagSpecificationRequest && value)880     inline RequestLaunchTemplateData& AddTagSpecifications(LaunchTemplateTagSpecificationRequest&& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications.push_back(std::move(value)); return *this; }
881 
882 
883     /**
884      * <p>An elastic GPU to associate with the instance.</p>
885      */
GetElasticGpuSpecifications()886     inline const Aws::Vector<ElasticGpuSpecification>& GetElasticGpuSpecifications() const{ return m_elasticGpuSpecifications; }
887 
888     /**
889      * <p>An elastic GPU to associate with the instance.</p>
890      */
ElasticGpuSpecificationsHasBeenSet()891     inline bool ElasticGpuSpecificationsHasBeenSet() const { return m_elasticGpuSpecificationsHasBeenSet; }
892 
893     /**
894      * <p>An elastic GPU to associate with the instance.</p>
895      */
SetElasticGpuSpecifications(const Aws::Vector<ElasticGpuSpecification> & value)896     inline void SetElasticGpuSpecifications(const Aws::Vector<ElasticGpuSpecification>& value) { m_elasticGpuSpecificationsHasBeenSet = true; m_elasticGpuSpecifications = value; }
897 
898     /**
899      * <p>An elastic GPU to associate with the instance.</p>
900      */
SetElasticGpuSpecifications(Aws::Vector<ElasticGpuSpecification> && value)901     inline void SetElasticGpuSpecifications(Aws::Vector<ElasticGpuSpecification>&& value) { m_elasticGpuSpecificationsHasBeenSet = true; m_elasticGpuSpecifications = std::move(value); }
902 
903     /**
904      * <p>An elastic GPU to associate with the instance.</p>
905      */
WithElasticGpuSpecifications(const Aws::Vector<ElasticGpuSpecification> & value)906     inline RequestLaunchTemplateData& WithElasticGpuSpecifications(const Aws::Vector<ElasticGpuSpecification>& value) { SetElasticGpuSpecifications(value); return *this;}
907 
908     /**
909      * <p>An elastic GPU to associate with the instance.</p>
910      */
WithElasticGpuSpecifications(Aws::Vector<ElasticGpuSpecification> && value)911     inline RequestLaunchTemplateData& WithElasticGpuSpecifications(Aws::Vector<ElasticGpuSpecification>&& value) { SetElasticGpuSpecifications(std::move(value)); return *this;}
912 
913     /**
914      * <p>An elastic GPU to associate with the instance.</p>
915      */
AddElasticGpuSpecifications(const ElasticGpuSpecification & value)916     inline RequestLaunchTemplateData& AddElasticGpuSpecifications(const ElasticGpuSpecification& value) { m_elasticGpuSpecificationsHasBeenSet = true; m_elasticGpuSpecifications.push_back(value); return *this; }
917 
918     /**
919      * <p>An elastic GPU to associate with the instance.</p>
920      */
AddElasticGpuSpecifications(ElasticGpuSpecification && value)921     inline RequestLaunchTemplateData& AddElasticGpuSpecifications(ElasticGpuSpecification&& value) { m_elasticGpuSpecificationsHasBeenSet = true; m_elasticGpuSpecifications.push_back(std::move(value)); return *this; }
922 
923 
924     /**
925      * <p> The elastic inference accelerator for the instance. </p>
926      */
GetElasticInferenceAccelerators()927     inline const Aws::Vector<LaunchTemplateElasticInferenceAccelerator>& GetElasticInferenceAccelerators() const{ return m_elasticInferenceAccelerators; }
928 
929     /**
930      * <p> The elastic inference accelerator for the instance. </p>
931      */
ElasticInferenceAcceleratorsHasBeenSet()932     inline bool ElasticInferenceAcceleratorsHasBeenSet() const { return m_elasticInferenceAcceleratorsHasBeenSet; }
933 
934     /**
935      * <p> The elastic inference accelerator for the instance. </p>
936      */
SetElasticInferenceAccelerators(const Aws::Vector<LaunchTemplateElasticInferenceAccelerator> & value)937     inline void SetElasticInferenceAccelerators(const Aws::Vector<LaunchTemplateElasticInferenceAccelerator>& value) { m_elasticInferenceAcceleratorsHasBeenSet = true; m_elasticInferenceAccelerators = value; }
938 
939     /**
940      * <p> The elastic inference accelerator for the instance. </p>
941      */
SetElasticInferenceAccelerators(Aws::Vector<LaunchTemplateElasticInferenceAccelerator> && value)942     inline void SetElasticInferenceAccelerators(Aws::Vector<LaunchTemplateElasticInferenceAccelerator>&& value) { m_elasticInferenceAcceleratorsHasBeenSet = true; m_elasticInferenceAccelerators = std::move(value); }
943 
944     /**
945      * <p> The elastic inference accelerator for the instance. </p>
946      */
WithElasticInferenceAccelerators(const Aws::Vector<LaunchTemplateElasticInferenceAccelerator> & value)947     inline RequestLaunchTemplateData& WithElasticInferenceAccelerators(const Aws::Vector<LaunchTemplateElasticInferenceAccelerator>& value) { SetElasticInferenceAccelerators(value); return *this;}
948 
949     /**
950      * <p> The elastic inference accelerator for the instance. </p>
951      */
WithElasticInferenceAccelerators(Aws::Vector<LaunchTemplateElasticInferenceAccelerator> && value)952     inline RequestLaunchTemplateData& WithElasticInferenceAccelerators(Aws::Vector<LaunchTemplateElasticInferenceAccelerator>&& value) { SetElasticInferenceAccelerators(std::move(value)); return *this;}
953 
954     /**
955      * <p> The elastic inference accelerator for the instance. </p>
956      */
AddElasticInferenceAccelerators(const LaunchTemplateElasticInferenceAccelerator & value)957     inline RequestLaunchTemplateData& AddElasticInferenceAccelerators(const LaunchTemplateElasticInferenceAccelerator& value) { m_elasticInferenceAcceleratorsHasBeenSet = true; m_elasticInferenceAccelerators.push_back(value); return *this; }
958 
959     /**
960      * <p> The elastic inference accelerator for the instance. </p>
961      */
AddElasticInferenceAccelerators(LaunchTemplateElasticInferenceAccelerator && value)962     inline RequestLaunchTemplateData& AddElasticInferenceAccelerators(LaunchTemplateElasticInferenceAccelerator&& value) { m_elasticInferenceAcceleratorsHasBeenSet = true; m_elasticInferenceAccelerators.push_back(std::move(value)); return *this; }
963 
964 
965     /**
966      * <p>One or more security group IDs. You can create a security group using <a
967      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
968      * You cannot specify both a security group ID and security name in the same
969      * request.</p>
970      */
GetSecurityGroupIds()971     inline const Aws::Vector<Aws::String>& GetSecurityGroupIds() const{ return m_securityGroupIds; }
972 
973     /**
974      * <p>One or more security group IDs. You can create a security group using <a
975      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
976      * You cannot specify both a security group ID and security name in the same
977      * request.</p>
978      */
SecurityGroupIdsHasBeenSet()979     inline bool SecurityGroupIdsHasBeenSet() const { return m_securityGroupIdsHasBeenSet; }
980 
981     /**
982      * <p>One or more security group IDs. You can create a security group using <a
983      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
984      * You cannot specify both a security group ID and security name in the same
985      * request.</p>
986      */
SetSecurityGroupIds(const Aws::Vector<Aws::String> & value)987     inline void SetSecurityGroupIds(const Aws::Vector<Aws::String>& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = value; }
988 
989     /**
990      * <p>One or more security group IDs. You can create a security group using <a
991      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
992      * You cannot specify both a security group ID and security name in the same
993      * request.</p>
994      */
SetSecurityGroupIds(Aws::Vector<Aws::String> && value)995     inline void SetSecurityGroupIds(Aws::Vector<Aws::String>&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = std::move(value); }
996 
997     /**
998      * <p>One or more security group IDs. You can create a security group using <a
999      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
1000      * You cannot specify both a security group ID and security name in the same
1001      * request.</p>
1002      */
WithSecurityGroupIds(const Aws::Vector<Aws::String> & value)1003     inline RequestLaunchTemplateData& WithSecurityGroupIds(const Aws::Vector<Aws::String>& value) { SetSecurityGroupIds(value); return *this;}
1004 
1005     /**
1006      * <p>One or more security group IDs. You can create a security group using <a
1007      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
1008      * You cannot specify both a security group ID and security name in the same
1009      * request.</p>
1010      */
WithSecurityGroupIds(Aws::Vector<Aws::String> && value)1011     inline RequestLaunchTemplateData& WithSecurityGroupIds(Aws::Vector<Aws::String>&& value) { SetSecurityGroupIds(std::move(value)); return *this;}
1012 
1013     /**
1014      * <p>One or more security group IDs. You can create a security group using <a
1015      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
1016      * You cannot specify both a security group ID and security name in the same
1017      * request.</p>
1018      */
AddSecurityGroupIds(const Aws::String & value)1019     inline RequestLaunchTemplateData& AddSecurityGroupIds(const Aws::String& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; }
1020 
1021     /**
1022      * <p>One or more security group IDs. You can create a security group using <a
1023      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
1024      * You cannot specify both a security group ID and security name in the same
1025      * request.</p>
1026      */
AddSecurityGroupIds(Aws::String && value)1027     inline RequestLaunchTemplateData& AddSecurityGroupIds(Aws::String&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(std::move(value)); return *this; }
1028 
1029     /**
1030      * <p>One or more security group IDs. You can create a security group using <a
1031      * href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html">CreateSecurityGroup</a>.
1032      * You cannot specify both a security group ID and security name in the same
1033      * request.</p>
1034      */
AddSecurityGroupIds(const char * value)1035     inline RequestLaunchTemplateData& AddSecurityGroupIds(const char* value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; }
1036 
1037 
1038     /**
1039      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1040      * VPC, you must use security group IDs instead. You cannot specify both a security
1041      * group ID and security name in the same request.</p>
1042      */
GetSecurityGroups()1043     inline const Aws::Vector<Aws::String>& GetSecurityGroups() const{ return m_securityGroups; }
1044 
1045     /**
1046      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1047      * VPC, you must use security group IDs instead. You cannot specify both a security
1048      * group ID and security name in the same request.</p>
1049      */
SecurityGroupsHasBeenSet()1050     inline bool SecurityGroupsHasBeenSet() const { return m_securityGroupsHasBeenSet; }
1051 
1052     /**
1053      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1054      * VPC, you must use security group IDs instead. You cannot specify both a security
1055      * group ID and security name in the same request.</p>
1056      */
SetSecurityGroups(const Aws::Vector<Aws::String> & value)1057     inline void SetSecurityGroups(const Aws::Vector<Aws::String>& value) { m_securityGroupsHasBeenSet = true; m_securityGroups = value; }
1058 
1059     /**
1060      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1061      * VPC, you must use security group IDs instead. You cannot specify both a security
1062      * group ID and security name in the same request.</p>
1063      */
SetSecurityGroups(Aws::Vector<Aws::String> && value)1064     inline void SetSecurityGroups(Aws::Vector<Aws::String>&& value) { m_securityGroupsHasBeenSet = true; m_securityGroups = std::move(value); }
1065 
1066     /**
1067      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1068      * VPC, you must use security group IDs instead. You cannot specify both a security
1069      * group ID and security name in the same request.</p>
1070      */
WithSecurityGroups(const Aws::Vector<Aws::String> & value)1071     inline RequestLaunchTemplateData& WithSecurityGroups(const Aws::Vector<Aws::String>& value) { SetSecurityGroups(value); return *this;}
1072 
1073     /**
1074      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1075      * VPC, you must use security group IDs instead. You cannot specify both a security
1076      * group ID and security name in the same request.</p>
1077      */
WithSecurityGroups(Aws::Vector<Aws::String> && value)1078     inline RequestLaunchTemplateData& WithSecurityGroups(Aws::Vector<Aws::String>&& value) { SetSecurityGroups(std::move(value)); return *this;}
1079 
1080     /**
1081      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1082      * VPC, you must use security group IDs instead. You cannot specify both a security
1083      * group ID and security name in the same request.</p>
1084      */
AddSecurityGroups(const Aws::String & value)1085     inline RequestLaunchTemplateData& AddSecurityGroups(const Aws::String& value) { m_securityGroupsHasBeenSet = true; m_securityGroups.push_back(value); return *this; }
1086 
1087     /**
1088      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1089      * VPC, you must use security group IDs instead. You cannot specify both a security
1090      * group ID and security name in the same request.</p>
1091      */
AddSecurityGroups(Aws::String && value)1092     inline RequestLaunchTemplateData& AddSecurityGroups(Aws::String&& value) { m_securityGroupsHasBeenSet = true; m_securityGroups.push_back(std::move(value)); return *this; }
1093 
1094     /**
1095      * <p>[EC2-Classic, default VPC] One or more security group names. For a nondefault
1096      * VPC, you must use security group IDs instead. You cannot specify both a security
1097      * group ID and security name in the same request.</p>
1098      */
AddSecurityGroups(const char * value)1099     inline RequestLaunchTemplateData& AddSecurityGroups(const char* value) { m_securityGroupsHasBeenSet = true; m_securityGroups.push_back(value); return *this; }
1100 
1101 
1102     /**
1103      * <p>The market (purchasing) option for the instances.</p>
1104      */
GetInstanceMarketOptions()1105     inline const LaunchTemplateInstanceMarketOptionsRequest& GetInstanceMarketOptions() const{ return m_instanceMarketOptions; }
1106 
1107     /**
1108      * <p>The market (purchasing) option for the instances.</p>
1109      */
InstanceMarketOptionsHasBeenSet()1110     inline bool InstanceMarketOptionsHasBeenSet() const { return m_instanceMarketOptionsHasBeenSet; }
1111 
1112     /**
1113      * <p>The market (purchasing) option for the instances.</p>
1114      */
SetInstanceMarketOptions(const LaunchTemplateInstanceMarketOptionsRequest & value)1115     inline void SetInstanceMarketOptions(const LaunchTemplateInstanceMarketOptionsRequest& value) { m_instanceMarketOptionsHasBeenSet = true; m_instanceMarketOptions = value; }
1116 
1117     /**
1118      * <p>The market (purchasing) option for the instances.</p>
1119      */
SetInstanceMarketOptions(LaunchTemplateInstanceMarketOptionsRequest && value)1120     inline void SetInstanceMarketOptions(LaunchTemplateInstanceMarketOptionsRequest&& value) { m_instanceMarketOptionsHasBeenSet = true; m_instanceMarketOptions = std::move(value); }
1121 
1122     /**
1123      * <p>The market (purchasing) option for the instances.</p>
1124      */
WithInstanceMarketOptions(const LaunchTemplateInstanceMarketOptionsRequest & value)1125     inline RequestLaunchTemplateData& WithInstanceMarketOptions(const LaunchTemplateInstanceMarketOptionsRequest& value) { SetInstanceMarketOptions(value); return *this;}
1126 
1127     /**
1128      * <p>The market (purchasing) option for the instances.</p>
1129      */
WithInstanceMarketOptions(LaunchTemplateInstanceMarketOptionsRequest && value)1130     inline RequestLaunchTemplateData& WithInstanceMarketOptions(LaunchTemplateInstanceMarketOptionsRequest&& value) { SetInstanceMarketOptions(std::move(value)); return *this;}
1131 
1132 
1133     /**
1134      * <p>The credit option for CPU usage of the instance. Valid for T2, T3, or T3a
1135      * instances only.</p>
1136      */
GetCreditSpecification()1137     inline const CreditSpecificationRequest& GetCreditSpecification() const{ return m_creditSpecification; }
1138 
1139     /**
1140      * <p>The credit option for CPU usage of the instance. Valid for T2, T3, or T3a
1141      * instances only.</p>
1142      */
CreditSpecificationHasBeenSet()1143     inline bool CreditSpecificationHasBeenSet() const { return m_creditSpecificationHasBeenSet; }
1144 
1145     /**
1146      * <p>The credit option for CPU usage of the instance. Valid for T2, T3, or T3a
1147      * instances only.</p>
1148      */
SetCreditSpecification(const CreditSpecificationRequest & value)1149     inline void SetCreditSpecification(const CreditSpecificationRequest& value) { m_creditSpecificationHasBeenSet = true; m_creditSpecification = value; }
1150 
1151     /**
1152      * <p>The credit option for CPU usage of the instance. Valid for T2, T3, or T3a
1153      * instances only.</p>
1154      */
SetCreditSpecification(CreditSpecificationRequest && value)1155     inline void SetCreditSpecification(CreditSpecificationRequest&& value) { m_creditSpecificationHasBeenSet = true; m_creditSpecification = std::move(value); }
1156 
1157     /**
1158      * <p>The credit option for CPU usage of the instance. Valid for T2, T3, or T3a
1159      * instances only.</p>
1160      */
WithCreditSpecification(const CreditSpecificationRequest & value)1161     inline RequestLaunchTemplateData& WithCreditSpecification(const CreditSpecificationRequest& value) { SetCreditSpecification(value); return *this;}
1162 
1163     /**
1164      * <p>The credit option for CPU usage of the instance. Valid for T2, T3, or T3a
1165      * instances only.</p>
1166      */
WithCreditSpecification(CreditSpecificationRequest && value)1167     inline RequestLaunchTemplateData& WithCreditSpecification(CreditSpecificationRequest&& value) { SetCreditSpecification(std::move(value)); return *this;}
1168 
1169 
1170     /**
1171      * <p>The CPU options for the instance. For more information, see <a
1172      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html">Optimizing
1173      * CPU Options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1174      */
GetCpuOptions()1175     inline const LaunchTemplateCpuOptionsRequest& GetCpuOptions() const{ return m_cpuOptions; }
1176 
1177     /**
1178      * <p>The CPU options for the instance. For more information, see <a
1179      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html">Optimizing
1180      * CPU Options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1181      */
CpuOptionsHasBeenSet()1182     inline bool CpuOptionsHasBeenSet() const { return m_cpuOptionsHasBeenSet; }
1183 
1184     /**
1185      * <p>The CPU options for the instance. For more information, see <a
1186      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html">Optimizing
1187      * CPU Options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1188      */
SetCpuOptions(const LaunchTemplateCpuOptionsRequest & value)1189     inline void SetCpuOptions(const LaunchTemplateCpuOptionsRequest& value) { m_cpuOptionsHasBeenSet = true; m_cpuOptions = value; }
1190 
1191     /**
1192      * <p>The CPU options for the instance. For more information, see <a
1193      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html">Optimizing
1194      * CPU Options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1195      */
SetCpuOptions(LaunchTemplateCpuOptionsRequest && value)1196     inline void SetCpuOptions(LaunchTemplateCpuOptionsRequest&& value) { m_cpuOptionsHasBeenSet = true; m_cpuOptions = std::move(value); }
1197 
1198     /**
1199      * <p>The CPU options for the instance. For more information, see <a
1200      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html">Optimizing
1201      * CPU Options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1202      */
WithCpuOptions(const LaunchTemplateCpuOptionsRequest & value)1203     inline RequestLaunchTemplateData& WithCpuOptions(const LaunchTemplateCpuOptionsRequest& value) { SetCpuOptions(value); return *this;}
1204 
1205     /**
1206      * <p>The CPU options for the instance. For more information, see <a
1207      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html">Optimizing
1208      * CPU Options</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1209      */
WithCpuOptions(LaunchTemplateCpuOptionsRequest && value)1210     inline RequestLaunchTemplateData& WithCpuOptions(LaunchTemplateCpuOptionsRequest&& value) { SetCpuOptions(std::move(value)); return *this;}
1211 
1212 
1213     /**
1214      * <p>The Capacity Reservation targeting option. If you do not specify this
1215      * parameter, the instance's Capacity Reservation preference defaults to
1216      * <code>open</code>, which enables it to run in any open Capacity Reservation that
1217      * has matching attributes (instance type, platform, Availability Zone).</p>
1218      */
GetCapacityReservationSpecification()1219     inline const LaunchTemplateCapacityReservationSpecificationRequest& GetCapacityReservationSpecification() const{ return m_capacityReservationSpecification; }
1220 
1221     /**
1222      * <p>The Capacity Reservation targeting option. If you do not specify this
1223      * parameter, the instance's Capacity Reservation preference defaults to
1224      * <code>open</code>, which enables it to run in any open Capacity Reservation that
1225      * has matching attributes (instance type, platform, Availability Zone).</p>
1226      */
CapacityReservationSpecificationHasBeenSet()1227     inline bool CapacityReservationSpecificationHasBeenSet() const { return m_capacityReservationSpecificationHasBeenSet; }
1228 
1229     /**
1230      * <p>The Capacity Reservation targeting option. If you do not specify this
1231      * parameter, the instance's Capacity Reservation preference defaults to
1232      * <code>open</code>, which enables it to run in any open Capacity Reservation that
1233      * has matching attributes (instance type, platform, Availability Zone).</p>
1234      */
SetCapacityReservationSpecification(const LaunchTemplateCapacityReservationSpecificationRequest & value)1235     inline void SetCapacityReservationSpecification(const LaunchTemplateCapacityReservationSpecificationRequest& value) { m_capacityReservationSpecificationHasBeenSet = true; m_capacityReservationSpecification = value; }
1236 
1237     /**
1238      * <p>The Capacity Reservation targeting option. If you do not specify this
1239      * parameter, the instance's Capacity Reservation preference defaults to
1240      * <code>open</code>, which enables it to run in any open Capacity Reservation that
1241      * has matching attributes (instance type, platform, Availability Zone).</p>
1242      */
SetCapacityReservationSpecification(LaunchTemplateCapacityReservationSpecificationRequest && value)1243     inline void SetCapacityReservationSpecification(LaunchTemplateCapacityReservationSpecificationRequest&& value) { m_capacityReservationSpecificationHasBeenSet = true; m_capacityReservationSpecification = std::move(value); }
1244 
1245     /**
1246      * <p>The Capacity Reservation targeting option. If you do not specify this
1247      * parameter, the instance's Capacity Reservation preference defaults to
1248      * <code>open</code>, which enables it to run in any open Capacity Reservation that
1249      * has matching attributes (instance type, platform, Availability Zone).</p>
1250      */
WithCapacityReservationSpecification(const LaunchTemplateCapacityReservationSpecificationRequest & value)1251     inline RequestLaunchTemplateData& WithCapacityReservationSpecification(const LaunchTemplateCapacityReservationSpecificationRequest& value) { SetCapacityReservationSpecification(value); return *this;}
1252 
1253     /**
1254      * <p>The Capacity Reservation targeting option. If you do not specify this
1255      * parameter, the instance's Capacity Reservation preference defaults to
1256      * <code>open</code>, which enables it to run in any open Capacity Reservation that
1257      * has matching attributes (instance type, platform, Availability Zone).</p>
1258      */
WithCapacityReservationSpecification(LaunchTemplateCapacityReservationSpecificationRequest && value)1259     inline RequestLaunchTemplateData& WithCapacityReservationSpecification(LaunchTemplateCapacityReservationSpecificationRequest&& value) { SetCapacityReservationSpecification(std::move(value)); return *this;}
1260 
1261 
1262     /**
1263      * <p>The license configurations.</p>
1264      */
GetLicenseSpecifications()1265     inline const Aws::Vector<LaunchTemplateLicenseConfigurationRequest>& GetLicenseSpecifications() const{ return m_licenseSpecifications; }
1266 
1267     /**
1268      * <p>The license configurations.</p>
1269      */
LicenseSpecificationsHasBeenSet()1270     inline bool LicenseSpecificationsHasBeenSet() const { return m_licenseSpecificationsHasBeenSet; }
1271 
1272     /**
1273      * <p>The license configurations.</p>
1274      */
SetLicenseSpecifications(const Aws::Vector<LaunchTemplateLicenseConfigurationRequest> & value)1275     inline void SetLicenseSpecifications(const Aws::Vector<LaunchTemplateLicenseConfigurationRequest>& value) { m_licenseSpecificationsHasBeenSet = true; m_licenseSpecifications = value; }
1276 
1277     /**
1278      * <p>The license configurations.</p>
1279      */
SetLicenseSpecifications(Aws::Vector<LaunchTemplateLicenseConfigurationRequest> && value)1280     inline void SetLicenseSpecifications(Aws::Vector<LaunchTemplateLicenseConfigurationRequest>&& value) { m_licenseSpecificationsHasBeenSet = true; m_licenseSpecifications = std::move(value); }
1281 
1282     /**
1283      * <p>The license configurations.</p>
1284      */
WithLicenseSpecifications(const Aws::Vector<LaunchTemplateLicenseConfigurationRequest> & value)1285     inline RequestLaunchTemplateData& WithLicenseSpecifications(const Aws::Vector<LaunchTemplateLicenseConfigurationRequest>& value) { SetLicenseSpecifications(value); return *this;}
1286 
1287     /**
1288      * <p>The license configurations.</p>
1289      */
WithLicenseSpecifications(Aws::Vector<LaunchTemplateLicenseConfigurationRequest> && value)1290     inline RequestLaunchTemplateData& WithLicenseSpecifications(Aws::Vector<LaunchTemplateLicenseConfigurationRequest>&& value) { SetLicenseSpecifications(std::move(value)); return *this;}
1291 
1292     /**
1293      * <p>The license configurations.</p>
1294      */
AddLicenseSpecifications(const LaunchTemplateLicenseConfigurationRequest & value)1295     inline RequestLaunchTemplateData& AddLicenseSpecifications(const LaunchTemplateLicenseConfigurationRequest& value) { m_licenseSpecificationsHasBeenSet = true; m_licenseSpecifications.push_back(value); return *this; }
1296 
1297     /**
1298      * <p>The license configurations.</p>
1299      */
AddLicenseSpecifications(LaunchTemplateLicenseConfigurationRequest && value)1300     inline RequestLaunchTemplateData& AddLicenseSpecifications(LaunchTemplateLicenseConfigurationRequest&& value) { m_licenseSpecificationsHasBeenSet = true; m_licenseSpecifications.push_back(std::move(value)); return *this; }
1301 
1302 
1303     /**
1304      * <p>Indicates whether an instance is enabled for hibernation. This parameter is
1305      * valid only if the instance meets the <a
1306      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites">hibernation
1307      * prerequisites</a>. For more information, see <a
1308      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html">Hibernate
1309      * your instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1310      */
GetHibernationOptions()1311     inline const LaunchTemplateHibernationOptionsRequest& GetHibernationOptions() const{ return m_hibernationOptions; }
1312 
1313     /**
1314      * <p>Indicates whether an instance is enabled for hibernation. This parameter is
1315      * valid only if the instance meets the <a
1316      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites">hibernation
1317      * prerequisites</a>. For more information, see <a
1318      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html">Hibernate
1319      * your instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1320      */
HibernationOptionsHasBeenSet()1321     inline bool HibernationOptionsHasBeenSet() const { return m_hibernationOptionsHasBeenSet; }
1322 
1323     /**
1324      * <p>Indicates whether an instance is enabled for hibernation. This parameter is
1325      * valid only if the instance meets the <a
1326      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites">hibernation
1327      * prerequisites</a>. For more information, see <a
1328      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html">Hibernate
1329      * your instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1330      */
SetHibernationOptions(const LaunchTemplateHibernationOptionsRequest & value)1331     inline void SetHibernationOptions(const LaunchTemplateHibernationOptionsRequest& value) { m_hibernationOptionsHasBeenSet = true; m_hibernationOptions = value; }
1332 
1333     /**
1334      * <p>Indicates whether an instance is enabled for hibernation. This parameter is
1335      * valid only if the instance meets the <a
1336      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites">hibernation
1337      * prerequisites</a>. For more information, see <a
1338      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html">Hibernate
1339      * your instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1340      */
SetHibernationOptions(LaunchTemplateHibernationOptionsRequest && value)1341     inline void SetHibernationOptions(LaunchTemplateHibernationOptionsRequest&& value) { m_hibernationOptionsHasBeenSet = true; m_hibernationOptions = std::move(value); }
1342 
1343     /**
1344      * <p>Indicates whether an instance is enabled for hibernation. This parameter is
1345      * valid only if the instance meets the <a
1346      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites">hibernation
1347      * prerequisites</a>. For more information, see <a
1348      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html">Hibernate
1349      * your instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1350      */
WithHibernationOptions(const LaunchTemplateHibernationOptionsRequest & value)1351     inline RequestLaunchTemplateData& WithHibernationOptions(const LaunchTemplateHibernationOptionsRequest& value) { SetHibernationOptions(value); return *this;}
1352 
1353     /**
1354      * <p>Indicates whether an instance is enabled for hibernation. This parameter is
1355      * valid only if the instance meets the <a
1356      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites">hibernation
1357      * prerequisites</a>. For more information, see <a
1358      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html">Hibernate
1359      * your instance</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
1360      */
WithHibernationOptions(LaunchTemplateHibernationOptionsRequest && value)1361     inline RequestLaunchTemplateData& WithHibernationOptions(LaunchTemplateHibernationOptionsRequest&& value) { SetHibernationOptions(std::move(value)); return *this;}
1362 
1363 
1364     /**
1365      * <p>The metadata options for the instance. For more information, see <a
1366      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html">Instance
1367      * metadata and user data</a> in the <i>Amazon Elastic Compute Cloud User
1368      * Guide</i>.</p>
1369      */
GetMetadataOptions()1370     inline const LaunchTemplateInstanceMetadataOptionsRequest& GetMetadataOptions() const{ return m_metadataOptions; }
1371 
1372     /**
1373      * <p>The metadata options for the instance. For more information, see <a
1374      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html">Instance
1375      * metadata and user data</a> in the <i>Amazon Elastic Compute Cloud User
1376      * Guide</i>.</p>
1377      */
MetadataOptionsHasBeenSet()1378     inline bool MetadataOptionsHasBeenSet() const { return m_metadataOptionsHasBeenSet; }
1379 
1380     /**
1381      * <p>The metadata options for the instance. For more information, see <a
1382      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html">Instance
1383      * metadata and user data</a> in the <i>Amazon Elastic Compute Cloud User
1384      * Guide</i>.</p>
1385      */
SetMetadataOptions(const LaunchTemplateInstanceMetadataOptionsRequest & value)1386     inline void SetMetadataOptions(const LaunchTemplateInstanceMetadataOptionsRequest& value) { m_metadataOptionsHasBeenSet = true; m_metadataOptions = value; }
1387 
1388     /**
1389      * <p>The metadata options for the instance. For more information, see <a
1390      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html">Instance
1391      * metadata and user data</a> in the <i>Amazon Elastic Compute Cloud User
1392      * Guide</i>.</p>
1393      */
SetMetadataOptions(LaunchTemplateInstanceMetadataOptionsRequest && value)1394     inline void SetMetadataOptions(LaunchTemplateInstanceMetadataOptionsRequest&& value) { m_metadataOptionsHasBeenSet = true; m_metadataOptions = std::move(value); }
1395 
1396     /**
1397      * <p>The metadata options for the instance. For more information, see <a
1398      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html">Instance
1399      * metadata and user data</a> in the <i>Amazon Elastic Compute Cloud User
1400      * Guide</i>.</p>
1401      */
WithMetadataOptions(const LaunchTemplateInstanceMetadataOptionsRequest & value)1402     inline RequestLaunchTemplateData& WithMetadataOptions(const LaunchTemplateInstanceMetadataOptionsRequest& value) { SetMetadataOptions(value); return *this;}
1403 
1404     /**
1405      * <p>The metadata options for the instance. For more information, see <a
1406      * href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html">Instance
1407      * metadata and user data</a> in the <i>Amazon Elastic Compute Cloud User
1408      * Guide</i>.</p>
1409      */
WithMetadataOptions(LaunchTemplateInstanceMetadataOptionsRequest && value)1410     inline RequestLaunchTemplateData& WithMetadataOptions(LaunchTemplateInstanceMetadataOptionsRequest&& value) { SetMetadataOptions(std::move(value)); return *this;}
1411 
1412 
1413     /**
1414      * <p>Indicates whether the instance is enabled for Amazon Web Services Nitro
1415      * Enclaves. For more information, see <a
1416      * href="https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html"> What
1417      * is Amazon Web Services Nitro Enclaves?</a> in the <i>Amazon Web Services Nitro
1418      * Enclaves User Guide</i>.</p> <p>You can't enable Amazon Web Services Nitro
1419      * Enclaves and hibernation on the same instance.</p>
1420      */
GetEnclaveOptions()1421     inline const LaunchTemplateEnclaveOptionsRequest& GetEnclaveOptions() const{ return m_enclaveOptions; }
1422 
1423     /**
1424      * <p>Indicates whether the instance is enabled for Amazon Web Services Nitro
1425      * Enclaves. For more information, see <a
1426      * href="https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html"> What
1427      * is Amazon Web Services Nitro Enclaves?</a> in the <i>Amazon Web Services Nitro
1428      * Enclaves User Guide</i>.</p> <p>You can't enable Amazon Web Services Nitro
1429      * Enclaves and hibernation on the same instance.</p>
1430      */
EnclaveOptionsHasBeenSet()1431     inline bool EnclaveOptionsHasBeenSet() const { return m_enclaveOptionsHasBeenSet; }
1432 
1433     /**
1434      * <p>Indicates whether the instance is enabled for Amazon Web Services Nitro
1435      * Enclaves. For more information, see <a
1436      * href="https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html"> What
1437      * is Amazon Web Services Nitro Enclaves?</a> in the <i>Amazon Web Services Nitro
1438      * Enclaves User Guide</i>.</p> <p>You can't enable Amazon Web Services Nitro
1439      * Enclaves and hibernation on the same instance.</p>
1440      */
SetEnclaveOptions(const LaunchTemplateEnclaveOptionsRequest & value)1441     inline void SetEnclaveOptions(const LaunchTemplateEnclaveOptionsRequest& value) { m_enclaveOptionsHasBeenSet = true; m_enclaveOptions = value; }
1442 
1443     /**
1444      * <p>Indicates whether the instance is enabled for Amazon Web Services Nitro
1445      * Enclaves. For more information, see <a
1446      * href="https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html"> What
1447      * is Amazon Web Services Nitro Enclaves?</a> in the <i>Amazon Web Services Nitro
1448      * Enclaves User Guide</i>.</p> <p>You can't enable Amazon Web Services Nitro
1449      * Enclaves and hibernation on the same instance.</p>
1450      */
SetEnclaveOptions(LaunchTemplateEnclaveOptionsRequest && value)1451     inline void SetEnclaveOptions(LaunchTemplateEnclaveOptionsRequest&& value) { m_enclaveOptionsHasBeenSet = true; m_enclaveOptions = std::move(value); }
1452 
1453     /**
1454      * <p>Indicates whether the instance is enabled for Amazon Web Services Nitro
1455      * Enclaves. For more information, see <a
1456      * href="https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html"> What
1457      * is Amazon Web Services Nitro Enclaves?</a> in the <i>Amazon Web Services Nitro
1458      * Enclaves User Guide</i>.</p> <p>You can't enable Amazon Web Services Nitro
1459      * Enclaves and hibernation on the same instance.</p>
1460      */
WithEnclaveOptions(const LaunchTemplateEnclaveOptionsRequest & value)1461     inline RequestLaunchTemplateData& WithEnclaveOptions(const LaunchTemplateEnclaveOptionsRequest& value) { SetEnclaveOptions(value); return *this;}
1462 
1463     /**
1464      * <p>Indicates whether the instance is enabled for Amazon Web Services Nitro
1465      * Enclaves. For more information, see <a
1466      * href="https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html"> What
1467      * is Amazon Web Services Nitro Enclaves?</a> in the <i>Amazon Web Services Nitro
1468      * Enclaves User Guide</i>.</p> <p>You can't enable Amazon Web Services Nitro
1469      * Enclaves and hibernation on the same instance.</p>
1470      */
WithEnclaveOptions(LaunchTemplateEnclaveOptionsRequest && value)1471     inline RequestLaunchTemplateData& WithEnclaveOptions(LaunchTemplateEnclaveOptionsRequest&& value) { SetEnclaveOptions(std::move(value)); return *this;}
1472 
1473   private:
1474 
1475     Aws::String m_kernelId;
1476     bool m_kernelIdHasBeenSet;
1477 
1478     bool m_ebsOptimized;
1479     bool m_ebsOptimizedHasBeenSet;
1480 
1481     LaunchTemplateIamInstanceProfileSpecificationRequest m_iamInstanceProfile;
1482     bool m_iamInstanceProfileHasBeenSet;
1483 
1484     Aws::Vector<LaunchTemplateBlockDeviceMappingRequest> m_blockDeviceMappings;
1485     bool m_blockDeviceMappingsHasBeenSet;
1486 
1487     Aws::Vector<LaunchTemplateInstanceNetworkInterfaceSpecificationRequest> m_networkInterfaces;
1488     bool m_networkInterfacesHasBeenSet;
1489 
1490     Aws::String m_imageId;
1491     bool m_imageIdHasBeenSet;
1492 
1493     InstanceType m_instanceType;
1494     bool m_instanceTypeHasBeenSet;
1495 
1496     Aws::String m_keyName;
1497     bool m_keyNameHasBeenSet;
1498 
1499     LaunchTemplatesMonitoringRequest m_monitoring;
1500     bool m_monitoringHasBeenSet;
1501 
1502     LaunchTemplatePlacementRequest m_placement;
1503     bool m_placementHasBeenSet;
1504 
1505     Aws::String m_ramDiskId;
1506     bool m_ramDiskIdHasBeenSet;
1507 
1508     bool m_disableApiTermination;
1509     bool m_disableApiTerminationHasBeenSet;
1510 
1511     ShutdownBehavior m_instanceInitiatedShutdownBehavior;
1512     bool m_instanceInitiatedShutdownBehaviorHasBeenSet;
1513 
1514     Aws::String m_userData;
1515     bool m_userDataHasBeenSet;
1516 
1517     Aws::Vector<LaunchTemplateTagSpecificationRequest> m_tagSpecifications;
1518     bool m_tagSpecificationsHasBeenSet;
1519 
1520     Aws::Vector<ElasticGpuSpecification> m_elasticGpuSpecifications;
1521     bool m_elasticGpuSpecificationsHasBeenSet;
1522 
1523     Aws::Vector<LaunchTemplateElasticInferenceAccelerator> m_elasticInferenceAccelerators;
1524     bool m_elasticInferenceAcceleratorsHasBeenSet;
1525 
1526     Aws::Vector<Aws::String> m_securityGroupIds;
1527     bool m_securityGroupIdsHasBeenSet;
1528 
1529     Aws::Vector<Aws::String> m_securityGroups;
1530     bool m_securityGroupsHasBeenSet;
1531 
1532     LaunchTemplateInstanceMarketOptionsRequest m_instanceMarketOptions;
1533     bool m_instanceMarketOptionsHasBeenSet;
1534 
1535     CreditSpecificationRequest m_creditSpecification;
1536     bool m_creditSpecificationHasBeenSet;
1537 
1538     LaunchTemplateCpuOptionsRequest m_cpuOptions;
1539     bool m_cpuOptionsHasBeenSet;
1540 
1541     LaunchTemplateCapacityReservationSpecificationRequest m_capacityReservationSpecification;
1542     bool m_capacityReservationSpecificationHasBeenSet;
1543 
1544     Aws::Vector<LaunchTemplateLicenseConfigurationRequest> m_licenseSpecifications;
1545     bool m_licenseSpecificationsHasBeenSet;
1546 
1547     LaunchTemplateHibernationOptionsRequest m_hibernationOptions;
1548     bool m_hibernationOptionsHasBeenSet;
1549 
1550     LaunchTemplateInstanceMetadataOptionsRequest m_metadataOptions;
1551     bool m_metadataOptionsHasBeenSet;
1552 
1553     LaunchTemplateEnclaveOptionsRequest m_enclaveOptions;
1554     bool m_enclaveOptionsHasBeenSet;
1555   };
1556 
1557 } // namespace Model
1558 } // namespace EC2
1559 } // namespace Aws
1560