等待EC2实例启动

Slartibartfast

我有一个运行我的服务的自定义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()
    }
  }
}

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

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

PS:我使用Scala

笑的

您正在检查实例状态,而您真正感兴趣的是实例状态检查。您可以使用describeInstanceStatusAmazon Java SDK中的方法,但是与其实施自己的轮询(在非惯用的Scala中),不如使用SDK中的一种现成的解决方案:EC2 waiters

import com.amazonaws.services.ec2._, model._, waiters._

val ec2client: AmazonEC2 = ...

val request = new DescribeInstanceStatusRequest().withInstanceIds(instanceID)

ec2client.waiters.instanceStatusOk.run(
  new WaiterParameters()
    .withRequest(request)
    // Optionally, you can tune the PollingStrategy:
    // .withPollingStrategy(...)
  )
)

要自定义轮询延迟和服务员的重试策略,请查阅PollingStrategy文档。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

等待EC2实例重启

来自分类Dev

使用名称启动EC2实例

来自分类Dev

并行启动多个EC2实例

来自分类Dev

PXE 从 AWS EC2 实例启动?

来自分类Dev

安排 ec2 实例启动/停止

来自分类Dev

如何从预留实例启动 EC2 实例

来自分类Dev

自动缩放EC2:在启动实例上启动Webserver

来自分类Dev

AWS CloudWatch启动/停止EC2实例

来自分类Dev

使用Boto轮询停止或启动的EC2实例

来自分类Dev

使用Ansible启动AWS EC2实例的最佳方法

来自分类Dev

EC2实例在停止后终止并自动启动

来自分类Dev

重新启动和停止EC2实例的费用

来自分类Dev

EC2实例启动日志拒绝IAM策略

来自分类Dev

停止并启动后,EC2实例无法正常工作

来自分类Dev

Auto Scaling组EC2实例启动失败

来自分类Dev

无法使用deltacloud启动AWS EC2实例

来自分类Dev

SQS:EC2实例启动时发布消息?

来自分类Dev

Ansible-如何启动(购买)保留的EC2实例

来自分类Dev

如何判断为什么启动了EC2实例

来自分类Dev

使用命名约定启动多个 EC2 实例

来自分类Dev

EC2实例淘汰-只是从AMI重新启动或启动新实例?

来自分类Dev

EC2实例创建

来自分类Dev

启动Amazon EC2实例后如何自动启动Tomcat

来自分类Dev

EC2:等待直到新实例处于运行状态

来自分类Dev

在多个EC2实例中远程执行程序并等待结果

来自分类Dev

如何知道EC2实例是EC2 Classic还是EC2 VPC实例?

来自分类Dev

应用操作系统更新后,AWC EC2 Amazon Linux 2实例无法启动

来自分类Dev

重新启动后,EC2 Windows实例未从启动文件夹启动批处理文件

来自分类Dev

使用boto3从AWS Lambda启动EC2实例时超时