是否可以根据 IP 地址获取 aws ec2 实例 ID

是否可以根据 IP 地址获取 aws ec2 实例 ID

我有 IP 地址列表,我想查找与 IP 地址关联的实例是否仍在运行或已终止。我每天都会启动和终止大量实例,只是想从 puppetmaster 中删除它们的证书。

如果有任何其他方法可以实现我的目标,我就可以这样做。

答案1

aws ec2 describe-instances --filter Name=ip-address,Values=IP_1,..IP_N

应该做你需要做的事。

使用过滤器名称private-ip-address来选择在您的 VPC 中使用私有地址。

通过类似的东西管道

jq -r '.Reservations[].Instances[] | .InstanceId, .PublicIpAddress'

如果你想要相应的InstanceID

答案2

如果您想在 bash 脚本中使用它,您可以使用 --query 和 --output 格式。

aws ec2 describe-instances --filter Name=private-ip-address,Values=x.x.x.x --query 'Reservations[].Instances[].InstanceId' --output text

这将为您提供不带 JSON 格式的文本响应

i-03c1ad0d6abe32323

答案3

另一种方法是使用CloudWatch 事件监听 EC2 实例是否被终止,并让监听器(可能是Lambda 函数或者一些监听SQS的自定义服务)从Puppet中删除相应的证书。

参考:

答案4

aws ec2 describe-instances --filter Name=private-ip-address,Values=10.xxx.xx.xx,10.yyy.yy.yy --query 'Reservations[].Instances[].InstanceId' --output text

相关内容