使用Javascript SDK在启动时关联ElasticIP
我正在使用Amazon javascript/nodejs sdk。我可以使用以下代码成功启动现有实例,但除非重新运行代码,否则不会将弹性IP地址分配给该实例。根据错误,这是因为实例尚未处于“已启动”状态,因此无法为其分配弹性IP 有没有办法在启动时将弹性IP分配给实例使用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
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分配给设备,以防万一。