createLaunchConfiguration method
- required String launchConfigurationName,
- bool? associatePublicIpAddress,
- List<
BlockDeviceMapping> ? blockDeviceMappings, - String? classicLinkVPCId,
- List<
String> ? classicLinkVPCSecurityGroups, - bool? ebsOptimized,
- String? iamInstanceProfile,
- String? imageId,
- String? instanceId,
- InstanceMonitoring? instanceMonitoring,
- String? instanceType,
- String? kernelId,
- String? keyName,
- InstanceMetadataOptions? metadataOptions,
- String? placementTenancy,
- String? ramdiskId,
- List<
String> ? securityGroups, - String? spotPrice,
- String? userData,
Creates a launch configuration.
If you exceed your maximum limit of launch configurations, the call fails. To query this limit, call the DescribeAccountLimits API. For information about updating this limit, see Quotas for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
For more information, see Launch configurations in the Amazon EC2 Auto Scaling User Guide.
May throw AlreadyExistsFault.
May throw LimitExceededFault.
May throw ResourceContentionFault.
Parameter launchConfigurationName :
The name of the launch configuration. This name must be unique per Region
per account.
Parameter associatePublicIpAddress :
Specifies whether to assign a public IPv4 address to the group's
instances. If the instance is launched into a default subnet, the default
is to assign a public IPv4 address, unless you disabled the option to
assign a public IPv4 address on the subnet. If the instance is launched
into a nondefault subnet, the default is not to assign a public IPv4
address, unless you enabled the option to assign a public IPv4 address on
the subnet.
If you specify true, each instance in the Auto Scaling group
receives a unique public IPv4 address. For more information, see Provide
network connectivity for your Auto Scaling instances using Amazon VPC
in the Amazon EC2 Auto Scaling User Guide.
If you specify this property, you must specify at least one subnet for
VPCZoneIdentifier when you create your group.
Parameter blockDeviceMappings :
The block device mapping entries that define the block devices to attach
to the instances at launch. By default, the block devices specified in the
block device mapping for the AMI are used. For more information, see Block
device mappings in the Amazon EC2 User Guide.
Parameter classicLinkVPCId :
Available for backward compatibility.
Parameter classicLinkVPCSecurityGroups :
Available for backward compatibility.
Parameter ebsOptimized :
Specifies whether the launch configuration is optimized for EBS I/O
(true) or not (false). The optimization provides
dedicated throughput to Amazon EBS and an optimized configuration stack to
provide optimal I/O performance. This optimization is not available with
all instance types. Additional fees are incurred when you enable EBS
optimization for an instance type that is not EBS-optimized by default.
For more information, see Amazon
EBS-optimized instances in the Amazon EC2 User Guide.
The default value is false.
Parameter iamInstanceProfile :
The name or the Amazon Resource Name (ARN) of the instance profile
associated with the IAM role for the instance. The instance profile
contains the IAM role. For more information, see IAM
role for applications that run on Amazon EC2 instances in the
Amazon EC2 Auto Scaling User Guide.
Parameter imageId :
The ID of the Amazon Machine Image (AMI) that was assigned during
registration. For more information, see Find
a Linux AMI in the Amazon EC2 User Guide.
If you specify InstanceId, an ImageId is not
required.
Parameter instanceId :
The ID of the instance to use to create the launch configuration. The new
launch configuration derives attributes from the instance, except for the
block device mapping.
To create a launch configuration with a block device mapping or override any other instance attributes, specify them as part of the same request.
For more information, see Create a launch configuration in the Amazon EC2 Auto Scaling User Guide.
Parameter instanceMonitoring :
Controls whether instances in this group are launched with detailed
(true) or basic (false) monitoring.
The default value is true (enabled).
Parameter instanceType :
Specifies the instance type of the EC2 instance. For information about
available instance types, see Available
instance types in the Amazon EC2 User Guide.
If you specify InstanceId, an InstanceType is
not required.
Parameter kernelId :
The ID of the kernel associated with the AMI.
Parameter keyName :
The name of the key pair. For more information, see Amazon
EC2 key pairs and Amazon EC2 instances in the Amazon EC2 User
Guide.
Parameter metadataOptions :
The metadata options for the instances. For more information, see Configure
the instance metadata options in the Amazon EC2 Auto Scaling User
Guide.
Parameter placementTenancy :
The tenancy of the instance, either default or
dedicated. An instance with dedicated tenancy
runs on isolated, single-tenant hardware and can only be launched into a
VPC. To launch dedicated instances into a shared tenancy VPC (a VPC with
the instance placement tenancy attribute set to default), you
must set the value of this property to dedicated.
If you specify PlacementTenancy, you must specify at least
one subnet for VPCZoneIdentifier when you create your group.
Valid values: default | dedicated
Parameter ramdiskId :
The ID of the RAM disk to select.
Parameter securityGroups :
A list that contains the security group IDs to assign to the instances in
the Auto Scaling group. For more information, see Control
traffic to your Amazon Web Services resources using security groups in
the Amazon Virtual Private Cloud User Guide.
Parameter spotPrice :
The maximum hourly price to be paid for any Spot Instance launched to
fulfill the request. Spot Instances are launched when the price you
specify exceeds the current Spot price. For more information, see Request
Spot Instances for fault-tolerant and flexible applications in the
Amazon EC2 Auto Scaling User Guide.
Valid Range: Minimum value of 0.001
Parameter userData :
The user data to make available to the launched EC2 instances. For more
information, see Instance
metadata and user data (Linux) and Instance
metadata and user data (Windows). If you are using a command line
tool, base64-encoding is performed for you, and you can load the text from
a file. Otherwise, you must provide base64-encoded text. User data is
limited to 16 KB.
Implementation
Future<void> createLaunchConfiguration({
required String launchConfigurationName,
bool? associatePublicIpAddress,
List<BlockDeviceMapping>? blockDeviceMappings,
String? classicLinkVPCId,
List<String>? classicLinkVPCSecurityGroups,
bool? ebsOptimized,
String? iamInstanceProfile,
String? imageId,
String? instanceId,
InstanceMonitoring? instanceMonitoring,
String? instanceType,
String? kernelId,
String? keyName,
InstanceMetadataOptions? metadataOptions,
String? placementTenancy,
String? ramdiskId,
List<String>? securityGroups,
String? spotPrice,
String? userData,
}) async {
final $request = <String, String>{
'LaunchConfigurationName': launchConfigurationName,
if (associatePublicIpAddress != null)
'AssociatePublicIpAddress': associatePublicIpAddress.toString(),
if (blockDeviceMappings != null)
if (blockDeviceMappings.isEmpty)
'BlockDeviceMappings': ''
else
for (var i1 = 0; i1 < blockDeviceMappings.length; i1++)
for (var e3 in blockDeviceMappings[i1].toQueryMap().entries)
'BlockDeviceMappings.member.${i1 + 1}.${e3.key}': e3.value,
if (classicLinkVPCId != null) 'ClassicLinkVPCId': classicLinkVPCId,
if (classicLinkVPCSecurityGroups != null)
if (classicLinkVPCSecurityGroups.isEmpty)
'ClassicLinkVPCSecurityGroups': ''
else
for (var i1 = 0; i1 < classicLinkVPCSecurityGroups.length; i1++)
'ClassicLinkVPCSecurityGroups.member.${i1 + 1}':
classicLinkVPCSecurityGroups[i1],
if (ebsOptimized != null) 'EbsOptimized': ebsOptimized.toString(),
if (iamInstanceProfile != null) 'IamInstanceProfile': iamInstanceProfile,
if (imageId != null) 'ImageId': imageId,
if (instanceId != null) 'InstanceId': instanceId,
if (instanceMonitoring != null)
for (var e1 in instanceMonitoring.toQueryMap().entries)
'InstanceMonitoring.${e1.key}': e1.value,
if (instanceType != null) 'InstanceType': instanceType,
if (kernelId != null) 'KernelId': kernelId,
if (keyName != null) 'KeyName': keyName,
if (metadataOptions != null)
for (var e1 in metadataOptions.toQueryMap().entries)
'MetadataOptions.${e1.key}': e1.value,
if (placementTenancy != null) 'PlacementTenancy': placementTenancy,
if (ramdiskId != null) 'RamdiskId': ramdiskId,
if (securityGroups != null)
if (securityGroups.isEmpty)
'SecurityGroups': ''
else
for (var i1 = 0; i1 < securityGroups.length; i1++)
'SecurityGroups.member.${i1 + 1}': securityGroups[i1],
if (spotPrice != null) 'SpotPrice': spotPrice,
if (userData != null) 'UserData': userData,
};
await _protocol.send(
$request,
action: 'CreateLaunchConfiguration',
version: '2011-01-01',
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
);
}