Auto Shutdown and Start Amazon EC2 Instance

后端 未结 14 1139
执念已碎
执念已碎 2020-12-04 06:49

Can I automatically start and terminate my Amazon instance using Amazon API? Can you please describe how this can be done? I ideally need to start the instance and stop the

14条回答
  •  生来不讨喜
    2020-12-04 07:16

    AWS Data Pipeline is working fine. https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-ec2-instances/

    If you wish exclude days from starting (e.g. weekend) add a ShellCommandPrecondition object.

    In AWS Console/Data Pipeline, create a new pipeline. It's easyer to edit/import a definition (JSON)

        {
    "objects": [
    {
      "failureAndRerunMode": "CASCADE",
      "schedule": {
        "ref": "DefaultSchedule"
      },
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "s3://MY_BUCKET/log/",
      "scheduleType": "cron",
      "name": "Default",
      "id": "Default"
    },
    {
      "name": "CliActivity",
      "id": "CliActivity",
      "runsOn": {
        "ref": "Ec2Instance"
      },
      "precondition": {
        "ref": "PreconditionDow"
      },
      "type": "ShellCommandActivity",
      "command": "(sudo yum -y update aws-cli) && (#{myAWSCLICmd})"
    },
    {
      "period": "1 days",
      "startDateTime": "2015-10-27T13:00:00",
      "name": "Every 1 day",
      "id": "DefaultSchedule",
      "type": "Schedule"
    },
    {
      "scriptUri": "s3://MY_BUCKET/script/dow.sh",
      "name": "DayOfWeekPrecondition",
      "id": "PreconditionDow",
      "type": "ShellCommandPrecondition"
    },
    {
      "instanceType": "t1.micro",
      "name": "Ec2Instance",
      "id": "Ec2Instance",
      "type": "Ec2Resource",
      "terminateAfter": "50 Minutes"
    }
    ],
    "parameters": [
    {
      "watermark": "aws [options]   [parameters]",
      "description": "AWS CLI command",
      "id": "myAWSCLICmd",
      "type": "String"
    }
     ],
    "values": {
    "myAWSCLICmd": "aws ec2 start-instances --instance-ids i-12345678 --region eu-west-1"
    }
    }
    

    Put the Bash script to be dowloaded and executed as precondition in your S3 bucket

    #!/bin/sh
    if [ "$(date +%u)" -lt 6 ]
    then exit 0
    else exit 1
    fi
    

    On activating and running the pipeline on weekend days, the AWS console Pipeline Health Status reads a misleading "ERROR". The bash script returns an error (exit 1) and EC2 isn't started. On days 1 to 5, the status is "HEALTHY".

    To stop EC2 automatically at closing office time, use the AWS CLI command daily wihtout precondition.

提交回复
热议问题