javascript - 使用 Javascript SDK 在启动时关联 ElasticIP

标签 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, 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 地址付费。

引用号:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html

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

关于javascript - 使用 Javascript SDK 在启动时关联 ElasticIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903296/

相关文章:

javascript - 遍历这个结构?

javascript - zombie 出现错误未处理的拒绝错误: Timeout: did not get to load all resources on this page

amazon-web-services - 亚马逊路线 53 : Domain transfer vs Name server update

javascript - 如何在Raphael中获取绘制的矩形元素?

node.js - 使用 mongoose 在 mongodb 中存储文件

node.js - db.collection 不是使用 mongodb 的函数

node.js - v0.10.6 上的 nodejs http.getagent 无法工作

python - 情感分析python 3亚马逊

amazon-web-services - 为什么我在Docker部署中收到拒绝的权限?

javascript - 从 onclick 事件调用 jQuery 函数