等待EC2实例启动

Sla*_*ast 5 scala amazon-ec2 amazon-web-services aws-sdk aws-java-sdk

我有一个运行我的服务的自定义AMI。使用AWS Java SDK,我使用RunInstancesRequestAMI 创建EC2实例。现在,在开始使用服务之前,必须确保新创建的实例已启动并正在运行。我使用以下方法轮询实例:

var transitionCompleted = false
while (!transitionCompleted) {
  val currentState = instance.getState.getName
  if (currentState == desiredState) {
    transitionCompleted = true
  }
  if(!transitionCompleted) {
    try {
      Thread.sleep(TRANSITION_INTERVAL)
    } catch {
      case e: InterruptedException => e.printStackTrace()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,当currentState实例的变成desiredState(是running)时,我得到实例已准备就绪的状态。但是,任何新创建的实例尽管处于running状态,但仍在初始化中,因此无法立即使用。

如何确保仅在能够访问实例及其服务时才返回?是否要进行任何特定的状态检查?

PS:我使用Scala