java - EC2 Java Api等到创建Ec2实例。

我刚刚开始在Java中使用Amazon EC2 API。
我使用ec2.runinstances(runinstancesrequest)创建了实例;
但实例启动需要一段时间(通常需要1-2分钟)。
我需要通过Java EC2 API获取机器的公共DNS。
如何知道实例何时从“挂起”状态更改为“已处理”状态,以及如何通过ec2 api获取ec2实例的公共dns。
提前谢谢。
坎纳

最佳答案

在ec2对象更改状态时,sdk不会发出事件模型或其他信号来通知您—唯一的方法是对该对象重复发出describexxxxxxx调用,例如每30秒发出一次,直到状态字段更改为止。
执行和响应调用的最短时间是有限的,因此需要找到一个在前一个调用完成之前不会触发请求的间隔。或者只需等待响应,然后再等待“n”秒,然后重新发出呼叫。您也不想用快速请求来给aws api发送垃圾邮件,即使它们是在响应之间计时的。在我的控制器应用程序中,我将时间间隔设置为30秒,发出请求,等待响应,然后从时间间隔中减去经过的时间,然后睡那么长时间。在多线程模型中,我可以同时跟踪多个对象上的状态更改,而不会占用本地CPU或API。
一旦检测到状态的变化(假设新的状态是你所期望的——不要忘记处理故障模式),你就可以得到各种各样的描述信息,包括api响应对象中返回的结构中的公共dns地址(对于实例对象)。

本文翻译自 https://stackoverflow.com/questions/7652247/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java amazon-web-services amazon-ec2 ec2-api-tools


相关文章:

java - javax.xml.ws.Endpoint.publish(字符串地址)引发NPE(Java 8u162)

node.js - 使用适用于Node.js的AWS开发工具包有什么方法可以检查S3存储桶中路径的存在吗?

java - 每秒一百万次远程函数调用

java - 无法使用JNI从java调用C ++的成员函数

java - 使用tomcat部署Maven应用程序后如何调试它?

mysql - 如何基于凭证限制与AWS RDS的连接?

ios - AWS S3返回“找不到身份池ID”

linux - SSH在终端中有效,但在Shell脚本中无效

java - 如何在另一个云上部署Java App Engine应用程序?

java - 使用like运算符搜索MySql数据库关键字