如何使用 EC2 api 来判断实例状态?
How to use EC2 api to tell instance status?
在AWS控制台中,您可以看到哪些实例在线,哪些正在关闭,哪些正在关闭。我试图在我的应用程序中复制此功能,但 EC2 api 似乎不合作。
这是我正在做的事情:
DescribeInstanceStatusRequest rr=new DescribeInstanceStatusRequest();
rr.InstanceIds=new List<string>(new[]{instanceId});
var status = ec2.DescribeInstanceStatus(rr);
List<InstanceStatus> statusses = new List<InstanceStatus>();
foreach (var s in status.InstanceStatuses)
{
if (s.InstanceId == instanceId)
{
statusses.Add(s);
}
}
if (statusses.Any())
{
var instanceStatus = statusses.First();
...
}
这在实例在线时工作正常,但只要我请求关闭它,实例就会从信息中消失。
如何获取所有实例的信息,包括那些正在关闭、关闭和终止的实例?
默认情况下,DescribeInstanceStatus 仅捕获 运行 的实例。您可以将请求中的 属性 IncludeAllInstances
设置为 true 以更改此设置。来自文档:
IncludeAllInstances
When true, includes the health status for all instances. When false,
includes the health status for running instances only.
Default: false
代码示例:
DescribeInstanceStatusRequest rr = new DescribeInstanceStatusRequest()
{
IncludeAllInstances = true
};
参考:
在AWS控制台中,您可以看到哪些实例在线,哪些正在关闭,哪些正在关闭。我试图在我的应用程序中复制此功能,但 EC2 api 似乎不合作。
这是我正在做的事情:
DescribeInstanceStatusRequest rr=new DescribeInstanceStatusRequest();
rr.InstanceIds=new List<string>(new[]{instanceId});
var status = ec2.DescribeInstanceStatus(rr);
List<InstanceStatus> statusses = new List<InstanceStatus>();
foreach (var s in status.InstanceStatuses)
{
if (s.InstanceId == instanceId)
{
statusses.Add(s);
}
}
if (statusses.Any())
{
var instanceStatus = statusses.First();
...
}
这在实例在线时工作正常,但只要我请求关闭它,实例就会从信息中消失。
如何获取所有实例的信息,包括那些正在关闭、关闭和终止的实例?
默认情况下,DescribeInstanceStatus 仅捕获 运行 的实例。您可以将请求中的 属性 IncludeAllInstances
设置为 true 以更改此设置。来自文档:
IncludeAllInstances
When true, includes the health status for all instances. When false, includes the health status for running instances only.
Default: false
代码示例:
DescribeInstanceStatusRequest rr = new DescribeInstanceStatusRequest()
{
IncludeAllInstances = true
};
参考: