我有 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