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

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

我刚刚开始使用 Java 中的 Amazon EC2 API。

我使用 ec2.runInstances(runInstancesRequest) 创建了实例;

但是启动实例需要一些时间(通常为 1-2 分钟)。 我需要通过 Java EC2 API 获取机器的公共(public) DNS。

我如何知道实例何时从“待定”状态变为“已处理”状态,以及如何通过 EC2 API 获取 EC2 实例的公共(public) DNS。

提前致谢。 看那

最佳答案

当 EC2 对象更改状态时,SDK 不会引发任何事件模型或其他信号来告诉您 - 唯一的发现方法是重复对对象发出 DescribeXXXXXXXX 调用,比如每 30 秒一次, 直到状态字段改变。

调用执行和响应的最短时间是有限的,因此您需要找到一个不会在前一个请求完成之前触发请求的时间间隔。或者只是等待响应,然后再等待 'n' 秒,然后再重新发出调用。您也不希望使用快速请求向 AWS API 发送垃圾邮件,即使它们是在响应之间计时的。在我的 Controller 应用程序中,我将间隔设置为 30 秒,发出请求,等待响应,然后从间隔中减去耗时并 hibernate 那么长时间。在多线程模型中,我可以同时跟踪许多对象的状态变化,而不会淹没我的本地 CPU 或 API。

一旦检测到状态变化(假设新状态符合您的预期——不要忘记处理故障模式),您可以获得各种描述性信息,包括公共(public) DNS 地址(在实例对象)来自 API 响应对象中返回的结构。

关于java - EC2 Java Api 等待创建 Ec2 实例。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652247/

相关文章:

amazon-web-services - 如何在我的 AWS RDS 上使用数据存储?

ssl - AWS 和 SSL 以及修改 EC2 实例的选项

java - 用于登录 S3 的 Log4j appender

java - 与经济数据的比较逻辑错误 - 比较方法违反了其一般契约

java - join(long millis) 在以下示例中如何工作?

amazon-web-services - aws auto scaling 在它扩展导致应用程序不可用之前删除不健康的实例

java - 在 AWS 上托管 java 应用程序

java - 是否有等同于 "java.awt.headless=true"的 SWT?

java - 从SQLite数据库删除项目时出错

encoding - Amazon EC2 上的 MP3 转换