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);
List reservations = ec2DescribeInstancesResponse.DescribeInstancesResult.Reservation;
foreach (Reservation reservation in reservations)
{
List runningInstances = reservation.RunningInstance;
foreach (RunningInstance runningInstance in runningInstances)
{
instanceID = runningInstance.InstanceId;
Console.WriteLine("Instanceid:" + instanceID);
//TerminateInstancesRequest ec2TerminateInstancesRequest = new TerminateInstancesRequest().WithInstanceId(instanceID);
//TerminateInstancesResponse ec2TerminateInstancesResponse = ec2.TerminateInstances(ec2TerminateInstancesRequest);
//TerminateInstancesResult ec2TerminateInstancesResult = ec2TerminateInstancesResponse.TerminateInstancesResult;
//List instanceStateChanges = ec2TerminateInstancesResult.TerminatingInstance;
//foreach (InstanceStateChange instanceStateChange in instanceStateChanges)
//{
// Console.WriteLine("instanceid:" + instanceStateChange.InstanceId + " Previous State:" + instanceStateChange.PreviousState.Name + " Current State:" + instanceStateChange.CurrentState.Name);
//}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}
Console.WriteLine("sleep 2s");
Thread.Sleep(2000);
Console.WriteLine("Create an Instance");
// run instance
String imageID = "ami-xxxxxxxx"; // here should set up imageid
RunInstancesRequest ec2RunInstancesRequest = new RunInstancesRequest()
.WithImageId(imageID).WithMinCount(1).WithMaxCount(1).WithInstanceType("m1.large");
// we only start one instance once, so we just use string to save the instanceID.
// otherwise, we should use string[]
try
{
RunInstancesResponse ec2RunInstancesResponse = ec2.RunInstances(ec2RunInstancesRequest);
RunInstancesResult ec2RunInstancesResult = ec2RunInstancesResponse.RunInstancesResult;
Reservation reservation = ec2RunInstancesResult.Reservation;
List runningInstances = reservation.RunningInstance;
foreach (RunningInstance runningInstance in runningInstances)
{
Console.WriteLine("Started a new instance:" + runningInstance.InstanceId);
Console.WriteLine("With an imageID:" + runningInstance.ImageId);
Console.WriteLine("Current State:" + runningInstance.InstanceState.Name);
instanceID = runningInstance.InstanceId;
}
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}
// check status:
Console.WriteLine("sleep 20s");
Thread.Sleep(20000);
Console.WriteLine("Start the Instance:" + instanceID);
// start an instance
StartInstancesRequest ec2StartInstancesRequest = new StartInstancesRequest().WithInstanceId(instanceID);
try
{
StartInstancesResponse ec2StartInstancesResponse = ec2.StartInstances(ec2StartInstancesRequest);
StartInstancesResult ec2StartInstancesResult = ec2StartInstancesResponse.StartInstancesResult;
if (ec2StartInstancesResult.IsSetStartingInstances())
{
List instances = ec2StartInstancesResult.StartingInstances;
foreach (InstanceStateChange instance in instances)
{
instanceID = instance.InstanceId;
Console.WriteLine("InstanceID:" + instanceID);
Console.WriteLine("Current State:" + instance.CurrentState.Name);
}
}
Console.WriteLine("Instance is started with instance ID:" + instanceID);
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}
Console.WriteLine("sleep 30s");
Thread.Sleep(30000);
Console.WriteLine("Check the Instance IPs:" + instanceID);
// check running instance
ec2DescribeInstancesRequest = new DescribeInstancesRequest();
try
{
DescribeInstancesResponse ec2DescribeInstancesResponse = ec2.DescribeInstances(ec2DescribeInstancesRequest);
List reservations = ec2DescribeInstancesResponse.DescribeInstancesResult.Reservation;
foreach (Reservation reservation in reservations)
{
List runningInstances = reservation.RunningInstance;
foreach (RunningInstance runningInstance in runningInstances)
{
instanceID = runningInstance.InstanceId;
Console.WriteLine("Instanceid:" + instanceID);
Console.WriteLine("Private Ip Address:" + runningInstance.PrivateIpAddress);
Console.WriteLine("Private DNS Address:" + runningInstance.PrivateDnsName);
Console.WriteLine("Public DNS Address:" + runningInstance.PublicDnsName);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}
Console.WriteLine("sleep 2s");
Thread.Sleep(2000);
Console.WriteLine("Stop the Instance:" + instanceID);
// shutdown the instance
StopInstancesRequest ec2StopInstancesRequest = new StopInstancesRequest().WithInstanceId(instanceID);
try
{
StopInstancesResponse ec2StopInstancesResponse = ec2.StopInstances(ec2StopInstancesRequest);
StopInstancesResult ec2StopInstancesResult = ec2StopInstancesResponse.StopInstancesResult;
if (ec2StopInstancesResult.IsSetStoppingInstances())
{
List instances = ec2StopInstancesResult.StoppingInstances;
foreach (InstanceStateChange instance in instances)
{
instanceID = instance.InstanceId;
Console.WriteLine("Current State:" + instance.CurrentState.Name);
}
Console.WriteLine("Instance is stopped with instance ID:" + instanceID);
}
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}
Console.WriteLine("sleep 30s");
Thread.Sleep(30000);
Console.WriteLine("Terminate the Instance:" + instanceID);
// terminate instance:
TerminateInstancesRequest ec2TerminateInstancesRequest = new TerminateInstancesRequest().WithInstanceId(instanceID);
TerminateInstancesResponse ec2TerminateInstancesResponse = ec2.TerminateInstances(ec2TerminateInstancesRequest);
TerminateInstancesResult ec2TerminateInstancesResult = ec2TerminateInstancesResponse.TerminateInstancesResult;
List instanceStateChanges = ec2TerminateInstancesResult.TerminatingInstance;
foreach (InstanceStateChange instanceStateChange in instanceStateChanges)
{
Console.WriteLine("instanceid:" + instanceStateChange.InstanceId + " Previous State:" + instanceStateChange.PreviousState.Name + " Current State:" + instanceStateChange.CurrentState.Name);
}
Console.WriteLine("sleep 30s");
Thread.Sleep(30000);
Console.WriteLine("Check the Instance states again");
//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);
List reservations = ec2DescribeInstancesResponse.DescribeInstancesResult.Reservation;
foreach (Reservation reservation in reservations)
{
List runningInstances = reservation.RunningInstance;
foreach (RunningInstance runningInstance in runningInstances)
{
instanceID = runningInstance.InstanceId;
Console.WriteLine("Instanceid:" + instanceID);
TerminateInstancesRequest ec2TerminateInstancesRequestin = new TerminateInstancesRequest().WithInstanceId(instanceID);
TerminateInstancesResponse ec2TerminateInstancesResponsein = ec2.TerminateInstances(ec2TerminateInstancesRequestin);
TerminateInstancesResult ec2TerminateInstancesResultin = ec2TerminateInstancesResponsein.TerminateInstancesResult;
List instanceStateChangeins = ec2TerminateInstancesResultin.TerminatingInstance;
foreach (InstanceStateChange instanceStateChange in instanceStateChangeins)
{
Console.WriteLine("instanceid:" + instanceStateChange.InstanceId + " Previous State:" + instanceStateChange.PreviousState.Name + " Current State:" + instanceStateChange.CurrentState.Name);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}
Console.WriteLine("This is the end of EC2 test.");
}
}
}
EC2 runtime Test
最新推荐文章于 2024-03-25 11:56:37 发布