You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS修改Spot Fleet目标容量报FleetNotInModifiableState错误如何解决

报错原因

FleetNotInModifiableState错误的触发原因是目标Spot Fleet请求不属于可修改类型:

  • 只有**持久型(type为maintain)**的Spot Fleet请求支持调用modify_spot_fleet_request接口修改目标容量
  • 一次性(one-time)、即时(instant)类型的Spot Fleet请求提交后就无法修改配置,只能直接取消
  • 已经处于cancelled/failed/expired状态的Spot Fleet请求也不支持修改

解决方案

方案1:直接取消当前不可修改的Spot Fleet(适用于一次性/即时类型的Spot Fleet)

替换原有modify_spot_fleet_request调用逻辑,改用cancel_spot_fleet_requests接口即可,示例代码如下:

import boto3
def lambda_handler(event, context):
    client = boto3.client('ec2')
    response = client.cancel_spot_fleet_requests(
        SpotFleetRequestIds=[
            'sfr-xxxxxxxx-593f-4444-9e99-nnnnnnnnnn',
        ],
        # 设为True会同时终止该Spot Fleet关联的所有实例,设为False则仅取消请求、保留实例
        TerminateInstances=True
    )
    print(response)

方案2:后续需频繁调整容量时,创建持久型Spot Fleet

如果后续需要经常修改Spot Fleet的目标容量,创建请求时指定Type为maintain即可,示例创建代码片段:

response = client.request_spot_fleet(
    SpotFleetRequestConfig={
        'TargetCapacity': 2,
        # 指定为持久维护型,支持后续修改配置
        'Type': 'maintain',
        'IamFleetRole': 'arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role',
        # 其余实例规格、镜像、子网等配置省略
        ...
    }
)

注意事项

  • 若使用的是AWS新版EC2 Fleet而非传统Spot Fleet,需要调用对应的modify_fleet/delete_fleet接口,而非Spot Fleet专属接口
  • 调用操作接口前可先调用describe_spot_fleet_requests接口查询目标请求的类型和状态,提前判断是否支持修改

内容的提问来源于stack exchange,提问作者Aravindan vaithialingam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:45:03