首页 > 解决方案 > 从同一 AWS 账户中的其他 EC2 实例启动/停止特定 EC2 实例

问题描述

从同一 AWS 账户中的另一个 EC2 实例(运行节点)启动/停止特定(例如,使用硬编码标识符)EC2 实例的简单方法是什么?

我熟悉Node,但不熟悉AWS SDK,我想我必须学习。同时我想知道是否可能存在另一个 AWS 服务,在该服务中我可以更轻松地将 HTTP 资源(例如可通过凭据 PUT/DELETE 修改)与特定 EC2 实例的状态(运行/停止)相关联。

标签: amazon-web-servicesamazon-ec2aws-sdkaws-api-gatewayaws-sdk-nodejs

解决方案


您可以使用 aws cli 或 SDK 来完成。

AWS CLI

一个非常简单的方法就是在第二个实例上安装 aws cli 并运行

aws ec2 start-instances --instance-ids i-1234567890abcdef0

或者

aws ec2 stop-instances --instance-ids i-1234567890abcdef0

SDK

如果您想坚持使用节点,那么您可以使用 SDK 以这种方式启动/停止实例:

 var params = {
  InstanceIds: [
     "i-1234567890abcdef0"
  ]
 };

 /* Start */
 ec2.startInstances(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
 });

 /* Stop */
 ec2.stopInstances(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
 });

重要的提示

请注意,实例的 IAM 角色需要包含以下策略(或等效策略)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": "*"
    }
  ]
}

希望能帮助到你!


推荐阅读