Auto Shutdown and Start Amazon EC2 Instance

后端 未结 14 1148
执念已碎
执念已碎 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:25

    I wrote code in Python, using the Boto library, to do this. You can adjust this for your own use. Make sure to run this as part of a cron job, and then you will be able to start-up or shut-down as many instances as you need during the cron jobs run.

    #!/usr/bin/python
    #
    # Auto-start and stop EC2 instances
    #
    import boto, datetime, sys
    from time import gmtime, strftime, sleep
    
    # AWS credentials
    aws_key = "AKIAxxx"
    aws_secret = "abcd"
    
    # The instances that we want to auto-start/stop
    instances = [
        # You can have tuples in this format:
        # [instance-id, name/description, startHour, stopHour, ipAddress]
        ["i-12345678", "Description", "00", "12", "1.2.3.4"]
    ]
    
    # --------------------------------------------
    
    # If its the weekend, then quit
    # If you don't care about the weekend, remove these three 
    # lines of code below.
    weekday = datetime.datetime.today().weekday()
    if (weekday == 5) or (weekday == 6):
        sys.exit()
    
    # Connect to EC2
    conn = boto.connect_ec2(aws_key, aws_secret)
    
    # Get current hour
    hh = strftime("%H", gmtime())
    
    # For each instance
    for (instance, description, start, stop, ip) in instances:
        # If this is the hour of starting it...
        if (hh == start):
            # Start the instance
            conn.start_instances(instance_ids=[instance])
            # Sleep for a few seconds to ensure starting
            sleep(10)
            # Associate the Elastic IP with instance
            if ip:
                conn.associate_address(instance, ip)
        # If this is the hour of stopping it...
        if (hh == stop):
            # Stop the instance
            conn.stop_instances(instance_ids=[instance])
    

提交回复
热议问题