如何在AWS CloudTrail中根据IP地址查询已终止的EC2实例
解决方案
1 CloudTrail中EC2私有IP对应的参数字段
EC2主私有IP在CloudTrail事件记录中的对应字段分两类场景:
- 实例创建/启动类事件(
RunInstances):IP参数路径为responseElements.instancesSet.items[].privateIpAddress,如果实例的主私网IP是创建时分配的,直接匹配该字段即可 - 网络接口变更类事件(
AttachNetworkInterface、ModifyNetworkInterfaceAttribute等):IP参数路径为responseElements.networkInterface.privateIpAddressesSet.items[].privateIpAddress,如果主私网IP是实例运行过程中修改的,需要匹配这类事件的对应字段
2 CloudTrail直接查询操作步骤
如果实例终止时间在CloudTrail事件默认保留期(90天)内,可直接按以下方式查询:
- 打开CloudTrail控制台,进入「事件历史」页面
- 新增筛选条件:属性选「事件源」,值输入
ec2.amazonaws.com - 再新增自定义筛选条件,字段输入对应场景的IP参数路径,值填你要查询的主私有IP即可
注意:如果实例终止超过90天,CloudTrail控制台不会保留对应事件,需要查询你提前归档到S3桶的CloudTrail日志文件。
3 AWS Config高级查询操作方法
不需要提前匹配CloudTrail参数,直接用以下查询语句即可通过私网IP反查关联的EC2实例(包括已终止实例,只要Config开启了EC2资源配置记录):
进入AWS Config控制台,打开「高级查询」功能,新建查询后粘贴以下语句,将<目标主私有IP>替换为实际IP后运行即可:
SELECT resourceId, resourceName, configuration.instanceType, configuration.privateIpAddress, configuration.state.name, availabilityZone, resourceCreationTime WHERE resourceType = 'AWS::EC2::Instance' AND configuration.privateIpAddress = '<目标主私有IP>'
查询结果会返回该IP绑定过的所有EC2实例的ID、状态、创建时间等信息,拿到实例ID后再去CloudTrail查询对应全量事件会更高效。
内容的提问来源于stack exchange,提问作者Ex-machina
相关产品推荐
相关产品推荐

