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

如何通过AWS PHP SDK创建带自定义配置的EC2实例并加入指定ECS集群

实现方案

方案1:直接创建带自定义配置的EC2实例,手动注册到ECS集群

  • 调用EC2 SDK的RunInstances接口创建实例,Spot竞价相关参数直接在请求的InstanceMarketOptions字段中配置即可,支持自定义竞价上限、实例中断策略、Spot实例类型等参数
  • 实例必须满足ECS注册的基础要求:使用ECS优化版AMI,绑定带有AmazonEC2ContainerServiceforEC2Role权限的IAM实例配置文件
  • 实例注册到集群有两种实现方式:
    • 方式1:在实例的UserData中注入集群注册配置,实例启动后会自动完成注册,配置示例如下(需要base64编码后传入参数):
      #!/bin/bash
      echo ECS_CLUSTER=你的ECS集群名称 >> /etc/ecs/ecs.config
      systemctl restart ecs.service
      
    • 方式2:实例创建完成后,主动调用ECS SDK的RegisterContainerInstance接口,传入集群名称、EC2实例ID等参数手动完成注册,适合批量实例操作场景

方案2:基于启动模板+ECS容量提供者实现(生产环境推荐)

  • 先调用EC2 SDK的CreateLaunchTemplate接口创建启动模板,提前把所有自定义配置(Spot参数、实例规格、AMI、安全组、集群注册UserData等)预存在模板中
  • 调用ECS SDK的CreateCapacityProvider接口关联上述启动模板,配置自动扩缩容规则后,将容量提供者绑定到你创建的ECS集群
  • 后续需要新增实例时,只需要调整容量提供者的目标容量,ECS会自动按照模板配置创建符合要求的实例,并自动注册到集群,无需手动处理实例创建和注册流程

PHP SDK关键代码示例

// 初始化EC2客户端
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'ap-northeast-1',
    'version' => '2016-11-15'
]);

// 创建带Spot配置的EC2实例
$result = $ec2Client->runInstances([
    'ImageId' => 'ami-xxxxxx', // 对应区域的ECS优化AMI ID
    'InstanceType' => 't3.large',
    'MinCount' => 1,
    'MaxCount' => 1,
    'IamInstanceProfile' => [
        'Name' => 'ecsInstanceRole-profile' // 提前创建的ECS实例角色对应的实例配置文件
    ],
    'UserData' => base64_encode("#!/bin/bash\necho ECS_CLUSTER=my-test-cluster >> /etc/ecs/ecs.config"),
    // Spot竞价配置
    'InstanceMarketOptions' => [
        'MarketType' => 'spot',
        'SpotOptions' => [
            'MaxPrice' => '0.08', // 自定义最高出价
            'SpotInstanceType' => 'one-time',
            'InterruptionBehavior' => 'terminate'
        ]
    ]
]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:09:00