如何识别EC2经典实例



最近收到一封题为" AWS关于Amazon ec2 - classic的重要消息"的电子邮件;描述需要发生的一些更改。这些来自AWS的邮件通常会引用受影响的资源,但这一封没有。我很难确定我们账户中的哪些资源受到了影响。我们所有的EC2实例都在一个VPC中,我甚至不确定是否有什么需要改变。

是否有一种方法可以识别EC2实例是经典的?

我已经浏览了他们的链接文档,并浏览了我们拥有的实例,但我不能判断它们是否"经典"。不是。

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

EC2控制台

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

当VPC ID属性为-时,表示该实例为EC2-Classic。(除了实例状态不是terminated)

CLI

2种检查方式。除非存在EC2-classic实例,否则输出为none。

  • 用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 select for terminated state

这是另一种过滤aws ec2 describe-instances结果的方法。在jq select中添加.State.Name != "terminated" and的效果与--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.

Amazon提供了一个脚本来标识受退役影响的所有资源,包括您可能不会考虑的资源,如安全组。

重要:运行脚本后检查errors.txt文件。即使出现错误(例如缺少/错误的凭据),脚本也会愉快地执行其步骤,而不会在控制台输出中显示任何提示问题。

最新更新