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

如何通过Node.js的aws-sdk调用API创建已停止状态的EC2实例

解决方案

AWS EC2 官方的runInstances接口没有提供创建时直接指定实例状态的参数,所有通过该接口创建的实例默认都会进入运行状态。要实现创建后直接为停止状态的需求,采用「创建实例+立即停止实例」的两步操作即可实现。

实现步骤

  • 调用runInstances方法创建实例,从返回结果中提取新实例的ID
  • 调用stopInstances方法,传入第一步获取的实例ID,执行停止操作
    如果担心实例还未创建完成就调用停止接口报错,可以使用SDK内置的等待器(waiter)等待实例进入running状态后再执行停止操作

完整代码示例(Node.js aws-sdk v2版本)

const AWS = require('aws-sdk');
// 配置对应AWS区域和访问凭证
AWS.config.update({ region: 'cn-northwest-1' });
const ec2 = new AWS.EC2({ apiVersion: '2016-11-15' });

const runParams = {
  ImageId: "ami-0dd2fbaxxxxx",
  InstanceType: "t3a.xlarge",
  KeyName: "xxxxx",
  MaxCount: 1,
  MinCount: 1,
  SecurityGroupIds: ['sg-xxx', 'sg-xxx'],
  CreditSpecification: {
      CpuCredits: 'standard'
  },
  TagSpecifications: [
      {
          ResourceType: "instance",
          Tags: [
              {
                  Key: "xxx",
                  Value: "xxx"
              }
          ]
      }
  ]
};

const createAndStopEC2 = async () => {
  try {
    // 第一步:创建实例
    const runRes = await ec2.runInstances(runParams).promise();
    const instanceId = runRes.Instances[0].InstanceId;
    console.log('实例创建成功,ID:', instanceId);

    // 可选:等待实例状态变为running,避免停止时报错
    await ec2.waitFor('instanceRunning', { InstanceIds: [instanceId] }).promise();

    // 第二步:停止实例
    await ec2.stopInstances({ InstanceIds: [instanceId] }).promise();
    console.log('实例已成功停止');
  } catch (err) {
    console.error('操作失败:', err);
  }
};

createAndStopEC2();

如果你使用的是aws-sdk v3版本,仅需要调整SDK的引入和调用方式,整体操作逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:21:00