2

当实例启动时,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);
        }

但这只是给出状态,而不是状态检查。

4

2 回答 2

2

您需要更深入地研究 InstanceStatus 对象。状态检查位于InstanceStatusDetailSystemStatusDetail属性中。这是为您获取该信息的片段:

        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);
于 2013-05-15T23:41:18.120 回答
0

使用Lucee (cfml) 我得到了这样的结果:

<cfset var DescribeInstanceStatusRequest = CreateObject('java','com.amazonaws.services.ec2.model.DescribeInstanceStatusRequest', jarLocation).init()>

<cfset var describeInstanceStatusRequest = DescribeInstanceStatusRequest.withInstanceIds([arguments.instanceId])>

<cfset var statusresult = ec2client.describeInstanceStatus(describeInstanceStatusRequest).getInstanceStatuses()[1].getInstanceStatus().getDetails()[1].getStatus()>

如果服务器已通过所有检查,则 this (statusresult) 给出“通过”。

注意:coldfusion 以不同的方式处理数组,因此,例如,如果您要翻译回 java,您将使用 [0] 而不是1

如果您只想要状态:正在运行、已停止等

<cfset var result = ec2client.describeInstanceStatus(describeInstanceStatusRequest).getInstanceStatuses()[1].getInstanceState().getName()>
于 2019-04-27T18:38:28.110 回答