Start/stop 来自同一 AWS 账户中其他 EC2 实例的特定 EC2 实例

Start/stop particular EC2 instance from other EC2 instance in same AWS account

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

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

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

AWS CLI

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

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

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

SDK

如果你想坚持使用 node,那么你可以 start/stop 使用 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": "*"
    }
  ]
}

希望对您有所帮助!

aws ec2 stop-instances --instance-ids i-1234567890abcdef0 --region us-east-2 实例 ID 是一个 space 分隔列表 如果您的实例在自动缩放组中,那么您还可以使用带有标签的过滤器,这样您就不必担心实例 ID