首页 > 解决方案 > 如何识别 EC2 经典实例

问题描述

最近收到一封标题为“来自 AWS 关于 Amazon EC2-Classic 的重要新闻”的电子邮件,其中描述了需要进行的一些更改。这些来自 AWS 的电子邮件通常会引用受影响的资源,而这封邮件没有。我很难确定我们帐户中的哪些资源受此影响。我们所有的 EC2 实例都在 VPC 中,我什至不确定是否需要更改任何内容。

有没有办法确定 EC2 实例是经典实例?

我查看了他们的链接文档并浏览了我们拥有的实例,但我无法判断它们是否“经典”。

标签: amazon-web-servicesamazon-ec2

解决方案


您可以通过检查实例是否具有 VPC ID 来识别 EC2-Classic 环境。

EC2 控制台

VPC ID 默认不显示。Preference从->启用 VPC ID Attribute columns

那么如果 VPC ID 属性为-,则表示该实例为 EC2-Classic。(除了实例状态不是terminated。)

命令行界面

2种检查方式。除非存在 EC2 经典实例,否则输出为无。

  • 使用 EC2-Classic 环境描述实例。
aws ec2 describe-instances --filters Name=instance-state-name,Values=pending,running,shutting-down,stopping,stopped | jq '.Reservations[].Instances[] | select(.VpcId == null)'
  • 如果是 EC2-Classic,请描述实例。
aws ec2 describe-instances --instance-id i-xxxxxxxxxxxx --filters Name=instance-state-name,Values=pending,running,shutting-down,stopping,stopped | jq '.Reservations[].Instances[] | select(.VpcId == null)'

jq 选择终止状态

这是过滤结果的另一种方法aws ec2 describe-instances。添加.State.Name != "terminated" andjq select 与--filters .... 这可能更具可读性。

aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(.State.Name != "terminated" and .VpcId == null)'

编辑说明:感谢@AUdden 的建议,我修改了 CLI 代码以过滤掉terminated状态。当我们终止实例(而不是停止)时,实例会以终止状态存在一段时间。终止的实例不再与 VPC 关联。为此,我添加了--filters Name=instance-state-name,Values=pending,running,shutting-down,stopping,stopped.


推荐阅读