An example code in .net of AWS EC2

using System;
using System.Configuration;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Text;

using Amazon;
using Amazon.EC2;
using Amazon.EC2.Model;
using Amazon.SimpleDB;
using Amazon.SimpleDB.Model;
using Amazon.S3;
using Amazon.S3.Model;
using System.Collections.Generic;

using System.Threading;

namespace ec2TestforAE
{
    class Program
    {

        public static void Main(string[] args)
        {
            //Console.Write(GetServiceOutput());
            ec2test();
            Console.Read();
        }

        public static void ec2test()
        {
            String instanceID = "";
            NameValueCollection appConfig = ConfigurationManager.AppSettings;
            AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client(appConfig["AWSAccessKey"],appConfig["AWSSecretKey"]);

            // describe existed instance            
            DescribeInstancesRequest ec2DescribeInstancesRequest = new DescribeInstancesRequest();

            try
            {
                DescribeInstancesResponse ec2DescribeInstancesResponse = ec2.DescribeInstances(ec2DescribeInstancesRequest);
                int numOfInstances = ec2DescribeInstancesResponse.DescribeInstancesResult.Reservation.Count;
                Console.WriteLine("Num of instance:" + numOfInstances);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.ToString());
            }

            Console.WriteLine("sleep 2s");
            Thread.Sleep(2000);
            
            // run instance
            String imageID = ""; // here should set up imageid
            RunInstancesRequest ec2RunInstancesRequest = new RunInstancesRequest().WithImageId(imageID);

            try
            {
                RunInstancesResponse ec2RunInstancesResponse = ec2.RunInstances(ec2RunInstancesRequest);
                instanceID = ec2RunInstancesResponse.RunInstancesResult.Reservation.ReservationId;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.ToString());
            }

            Console.WriteLine("sleep 20s");
            Thread.Sleep(20000);

            // start an instance
            StartInstancesRequest ec2StartInstancesRequest = new StartInstancesRequest().WithInstanceId(instanceID);

            try
            {
                StartInstancesResponse ec2StartInstancesResponse = ec2.StartInstances(ec2StartInstancesRequest);
                StartInstancesResult ec2StartInstancesResult = ec2StartInstancesResponse.StartInstancesResult;

                if (ec2StartInstancesResult.IsSetStartingInstances())
                {
                    List<InstanceStateChange> instances = ec2StartInstancesResult.StartingInstances;

                    foreach (InstanceStateChange instance in instances)
                    {
                        instanceID = instance.InstanceId;                        
                    }
                }

                Console.WriteLine("Instance is started with instance ID:" + instanceID);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.ToString());
            }

            Console.WriteLine("sleep 120s");
            Thread.Sleep(120000);

            // check running instance
            RunningInstance runningInstance = new RunningInstance().WithInstanceId(instanceID);

            try
            {
                Console.WriteLine("Private IP Address:" + runningInstance.PrivateIpAddress);
                Console.WriteLine("Public DNS Address:" + runningInstance.PublicDnsName);
            }
            catch(Exception ex)
            {
                Console.WriteLine("Error:" + ex.ToString());
            }

            Console.WriteLine("sleep 20s");
            Thread.Sleep(20000);

            // shutdown the instance
            StopInstancesRequest ec2StopInstancesRequest = new StopInstancesRequest().WithInstanceId(instanceID);

            try
            {
                StopInstancesResponse ec2StopInstancesResponse = ec2.StopInstances(ec2StopInstancesRequest);
                StopInstancesResult ec2StopInstancesResult = ec2StopInstancesResponse.StopInstancesResult;

                if (ec2StopInstancesResult.IsSetStoppingInstances())
                {
                    List<InstanceStateChange> instances = ec2StopInstancesResult.StoppingInstances;

                    foreach (InstanceStateChange instance in instances)
                    {
                        instanceID = instance.InstanceId;
                    }

                    Console.WriteLine("Instance is stopped with instance ID:" + instanceID);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.ToString());
            }

            Console.WriteLine("sleep 60s");
            Thread.Sleep(60000);

            //check number of instance
            ec2DescribeInstancesRequest = new DescribeInstancesRequest();

            try
            {
                DescribeInstancesResponse ec2DescribeInstancesResponse = ec2.DescribeInstances(ec2DescribeInstancesRequest);
                int numOfInstances = ec2DescribeInstancesResponse.DescribeInstancesResult.Reservation.Count;
                Console.WriteLine("Num of instance:" + numOfInstances);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.ToString());
            }

            Console.WriteLine("This is the end of EC2 test.");
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值