在 Node 中查找与已知 public IP 地址相关联的 EC2 资源 ID

Lookup EC2 resource ID to which a known public IP address is associated, in Node

给定一个已知的 public IP 地址(例如弹性 IP),我如何在 Node 中查找与其关联的 EC2 实例的资源 ID?

我的最终目的是 start/stop EC2 实例与同一 AWS 帐户中另一个 EC2 实例中节点 运行 的给定 public IP 地址相关联。我假设我首先必须找到我想要 start/stop 的实例的资源 ID,然后我可以使用资源 ID 调用 ec2.startInstances(),但在运行时我只知道 public实例的 IP 地址为 start/stop.

使用 describeAddresses 节点 API。它将列出您的 ElasticIP 以及每个分配给的 InstanceID。您可以从这里调用 startInstances()

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeAddresses-property

对于非弹性 IP,您或许可以添加一个启动脚本,使实例将其环境详细信息发送到您可以存储和引用的某个地方?

您可以使用 describeInstances"ip-address" 过滤器来查找您要查找的实例。然后您可以使用实例 ID 停止实例或执行您可能需要的任何其他操作。

var AWS = require('aws-sdk');
var ec2 = new AWS.EC2();
ec2.describeInstances(
    {
        Filters: [
            {
                Name: "ip-address",
                Values: [
                    "5.5.5.5"
                ]
            }
        ]
    },
    function (err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else { // successful response
            data.Reservations.forEach(r => {
                r.Instances.forEach(i => {
                    console.log(i.InstanceId);
                })
            })
        }
    }
);