View a markdown version of this page

使用同步配置启动实例 - Amazon EC2 Auto Scaling

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用同步配置启动实例

您可以使用该 LaunchInstances API 同步启动 Auto Scaling 组中特定数量的实例。API 在您指定的可用区或子网中启动实例,并立即返回实例 IDs 或错误信息。

先决条件

在使用 LaunchInstances API 之前,您必须具备以下条件:

  • 使用启动模板的 Auto Scaling 组(不支持启动配置)

  • 您必须拥有以下 IAM 操作的权限:

    • autoscaling:LaunchInstances

    • ec2:CreateFleet

    • ec2:DescribeLaunchTemplateVersions

使用同步配置启动实例

您可以通过启动具有同步配置功能的实例 AWS CLI。

AWS CLI

要使用同步配置启动实例,请执行以下操作:

aws autoscaling launch-instances \ --auto-scaling-group-name group-name \ --requested-capacity number \ [--availability-zones zone-name] \ [--subnet-ids subnet-id] \ [--availability-zone-ids zone-id] \ [--retry-strategy none|retry-with-group-configuration] \ [--client-token token]

示例

在特定可用区启动实例

aws autoscaling launch-instances \ --auto-scaling-group-name my-asg \ --requested-capacity 3 \ --availability-zones us-east-1a \ --retry-strategy retry-with-group-configuration

在特定子网中启动实例

aws autoscaling launch-instances \ --auto-scaling-group-name my-asg \ --requested-capacity 2 \ --subnet-ids subnet-12345678 \ --retry-strategy none \ --client-token my-unique-token-123

处理回复

成功响应的示例:

{ "AutoScalingGroupName": "my-asg", "ClientToken": "my-unique-token-123", "Instances": [ { "InstanceType": "m5.xlarge", "AvailabilityZone": "us-east-1a", "AvailabilityZoneId": "use1-az1", "SubnetId": "subnet-12345678", "MarketType": "OnDemand", "InstanceIds": ["i-0123456789abcdef0", "i-0fedcba9876543210"] } ], "Errors": [] }

有错误的响应示例

{ "AutoScalingGroupName": "my-asg", "ClientToken": "my-unique-token-123", "Instances": [], "Errors": [ { "InstanceType": "m5.large", "AvailabilityZone": "us-east-1a", "AvailabilityZoneId": "use1-az1", "SubnetId": "subnet-12345678", "MarketType": "OnDemand", "ErrorCode": "InsufficientInstanceCapacity", "ErrorMessage": "There is not enough capacity to fulfill your request for instance type 'm5.large' in 'us-east-1a'" } ] }

处理启动失败和重试

当 LaunchInstances API 遇到故障时,您可以使用等效令牌和适当的重试策略来实现重试策略。

您可以使用 client-token 参数来重试请求。您也可以使用以下重试策略:

  • RetryStrategy: none(默认)-如果 API 调用失败,Auto Scaling 组的所需容量将保持不变,并且不会自动重试。

  • RetryStrategy: retry-with-group-configuration-如果 API 调用失败,Auto Scaling 组的所需容量将按请求的数量增加,Auto Scaling 将使用该组的标准配置和流程自动重试启动实例。

的重试行为RetryStrategy: retry-with-group-configuration取决于失败类型:

  • 验证错误:由于操作无法继续,因此未增加所需容量。例如,无效的参数或不支持的配置。

  • 容量错误:所需容量已增加,Auto Scaling 将使用组的正常扩展流程重试异步启动实例。

使用客户端令牌实现等性

client-token参数可确保执行等性操作,并允许安全重试启动请求。

关键行为:

  • 客户令牌的有效期从初始请求算起 8 小时

  • 在 8 小时内使用相同的客户端令牌重试会返回缓存的响应,而不是启动新实例

  • 8 小时后,相同的客户端令牌将启动新的启动操作