2013-05-15 3 views
2

Консоль aws показывает два столбца State и Status Checks, когда экземпляр запускается. Состояние Running не является истинным отражением состояния, потому что проверка состояния может завершиться неудачей.AWS: как получить статус проверки состояния экземпляра, а не состояние

У кого-нибудь есть примеры .net C# кода для проверки состояния проверки состояния?

Ближайший у меня есть это:

var request = new DescribeInstanceStatusRequest(); 
     request.InstanceId = insts.Select(i => i.InstanceId).ToList(); 
     DescribeInstanceStatusResponse response = ec2Client.DescribeInstanceStatus(request); 

     InstanceStatus instanceStatus = response.DescribeInstanceStatusResult.InstanceStatus[0]; 
     Console.WriteLine("Availability zone - " + instanceStatus.AvailabilityZone); 
     Console.WriteLine("Instance State Code - " + instanceStatus.InstanceState.Code); 
     Console.WriteLine("Instance State Name - " + instanceStatus.InstanceState.Name); 

     foreach (InstanceStatusEvent statusEvent in instanceStatus.InstanceStatusEvent) 
     { 
      Console.WriteLine("Event Code - " + statusEvent.Code); 
      Console.WriteLine("Event Description - " + statusEvent.Description); 
      Console.WriteLine("Earliest Scheduled Start Time - " + statusEvent.NotBefore); 
      Console.WriteLine("Latest Scheduled End Time - " + statusEvent.NotAfter); 
     } 

Но это как раз дает государству, а не состояние проверки.

+0

Что печатает текущий код? – Undo

+0

Он печатает «работает», но это не то, что мне нужно, мне нужно состояние состояния «Проверка состояния», потому что это может завершиться ошибкой, и инициализация экземпляра пошла бы неправильно. – user1013388

ответ

2

Вам нужно глубже изучить объект InstanceStatus. Проверка состояния находится в InstanceStatusDetail и SystemStatusDetail. Вот фрагмент, который получает эту информацию для вас:

 var status = result.InstanceStatus[0]; 
     Console.WriteLine("Instance Status = " + status.InstanceStatusDetail.Status); 
     Console.WriteLine("Instance Status Detail Name = " + status.InstanceStatusDetail.Detail[0].Name); 
     Console.WriteLine("Instance Status Detail Status = " + status.InstanceStatusDetail.Detail[0].Status); 
     Console.WriteLine("System Status = " + status.SystemStatusDetail.Status); 
     Console.WriteLine("System Status Detail Name = " + status.SystemStatusDetail.Detail[0].Name); 
     Console.WriteLine("System Status Detail Status = " + status.SystemStatusDetail.Detail[0].Status); 
+0

+ Даже зная, где искать, это немного беспорядок. – Basic

Смежные вопросы