Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript SDK在启动时关联ElasticIP_Javascript_Node.js_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

使用Javascript SDK在启动时关联ElasticIP

使用Javascript SDK在启动时关联ElasticIP,javascript,node.js,amazon-web-services,amazon-ec2,Javascript,Node.js,Amazon Web Services,Amazon Ec2,我正在使用Amazon javascript/nodejs sdk。我可以使用以下代码成功启动现有实例,但除非重新运行代码,否则不会将弹性IP地址分配给该实例。根据错误,这是因为实例尚未处于“已启动”状态,因此无法为其分配弹性IP 有没有办法在启动时将弹性IP分配给实例 var ec2 = new AWS.EC2({region: 'us-east-1'}); ec2.startInstances({InstanceIds : ['i-xxxxxxxx'] },function (err, da

我正在使用Amazon javascript/nodejs sdk。我可以使用以下代码成功启动现有实例,但除非重新运行代码,否则不会将弹性IP地址分配给该实例。根据错误,这是因为实例尚未处于“已启动”状态,因此无法为其分配弹性IP

有没有办法在启动时将弹性IP分配给实例

var ec2 = new AWS.EC2({region: 'us-east-1'});
ec2.startInstances({InstanceIds : ['i-xxxxxxxx'] },function (err, data) {

    var params = {
        InstanceId: 'i-xxxxxxxx',
        PublicIp: '41.222.111.222'
    };
    ec2.associateAddress(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response

       return cb(null, data);
    });

});
我唯一能想到的另一种选择是在启动后等待几分钟,然后测试实例是否会接受弹性IP。如果可能的话,我想避免这种情况


谢谢你的帮助

如果您在ec2 classic上运行实例,则eip将被解除关联,如果您在ec2-VPC中有实例,则eip应保持关联

以下是AWS关于弹性IP的文档

EC2 Classic:我们解除与实例关联的任何弹性IP地址的关联。您需要为与实例无关的弹性IP地址付费。重启实例时,必须将弹性IP地址与实例关联;我们不会自动这样做

EC2-VPC:实例保留其关联的弹性IP地址。您需要为与已停止实例关联的任何弹性IP地址付费

参考:

如果您使用的是ec2 classic,则始终可以设置一个启动脚本,将EIP与实例关联起来。
如果希望以编程方式执行此操作,请尝试在创建实例时设置userdata。

谢谢您的回复。供其他人参考,因为上面的代码确实有效(基于我的测试),并且实例似乎在启动时就被分配了EIP。我正在使用Lambda函数,不希望进程依赖于启动脚本。作为故障保护,我有另一个lambda函数,它在实例启动几分钟后将EIP分配给设备,以防万一。