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

如何在Java版AWS CDK中配置ApplicationLoadBalancedFargateService仅用FARGATE_SPOT

在Java AWS CDK中配置ApplicationLoadBalancedFargateService仅使用FARGATE_SPOT实例

可以通过修改ECS服务的**容量提供器策略(Capacity Provider Strategy)**实现仅启动FARGATE_SPOT实例,具体实现方式如下:

实现步骤

  1. 创建基础的ApplicationLoadBalancedFargateService实例
  2. 定义仅包含FARGATE_SPOT的容量提供器策略
  3. 将该策略应用到底层ECS服务上

Java代码示例

import software.amazon.awscdk.services.ecs.CapacityProviderStrategy;
import software.amazon.awscdk.services.ecs.patterns.ApplicationLoadBalancedFargateService;
import java.util.List;

// 初始化ApplicationLoadBalancedFargateService
ApplicationLoadBalancedFargateService spotFargateService = ApplicationLoadBalancedFargateService.Builder.create(this, "SpotOnlyFargateService")
        .cluster(yourEcsCluster) // 替换为你的ECS集群实例
        .taskDefinition(yourTaskDefinition) // 替换为你的任务定义
        .desiredCount(3) // 根据业务需求设置期望实例数
        // 补充其他必要配置(如容器镜像、端口映射等)
        .build();

// 配置仅使用FARGATE_SPOT的容量策略
CapacityProviderStrategy spotStrategy = CapacityProviderStrategy.builder()
        .capacityProvider("FARGATE_SPOT")
        .weight(100) // 权重设为100,确保所有容量分配都指向FARGATE_SPOT
        .build();

// 将策略应用到底层ECS服务
spotFargateService.getService().setCapacityProviderStrategies(List.of(spotStrategy));

补充说明

  • 默认情况下,新建的支持Fargate的ECS集群会自动启用FARGATE和FARGATE_SPOT两种容量提供器,无需额外手动启用
  • 若需要强制所有实例都来自Spot,可以结合base参数(例如设置base为期望实例数),确保初始容量全部由FARGATE_SPOT提供
  • 该方法适用于AWS CDK v2及以上版本,若使用v1版本,API逻辑一致但部分包路径可能略有差异

内容的提问来源于stack exchange,提问作者Giulio Pulina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:20:31