【问题标题】:What is the proper way of using the AWS CLI EC2 "wait" function?使用 AWS CLI EC2“等待”功能的正确方法是什么?
【发布时间】:2015-02-05 18:43:16
【问题描述】:

我正在使用 AWS opsworks 静态配置一个简单的堆栈,由两层(Rails 应用服务器和 mySQL db)组成。

在成功配置并启动堆栈并部署我的应用程序后,我想将堆栈的启动活动作为我管道的一部分自动化。 AWS CLI 提供了启动堆栈、检索各个服务器的实例 ID,然后使用 EC2 等待命令轮询 AWS 以获取完成状态(“实例运行”)的功能。

下面的脚本是我正在使用的(第一个命令启动堆栈,第二个命令检索两个主机的实例 ID,第三个启动这两个服务器的等待命令):

#!/bin/bash

aws opsworks --region us-east-1 start-stack --stack-id 9e1b0534-5b38-4fa5-b30c-f849dda8f46b          

instance_id=$(aws opsworks --region us-east-1 describe-instances --stack-id 9e1b0534-5b38-4fa5-b30c-f849dda8f46b --query "Instances[].Ec2InstanceId" --output text)

aws ec2 wait --region ap-southeast-1 instance-running --instance-ids $instance_id

运行此脚本时,我总是在两个 id 之一上收到“InvalidInstanceID”异常,即使它绝对是正确的 ID。其次,如果在通过 AWS 控制台并行启动堆栈的同时直接在 shell 中运行最后一个命令,结果会在服务器实际启动并运行之前返回等待命令(这是练习的重点)。

最后,我找不到任何有关超时的信息,这对于阻塞异步操作似乎非常重要。在哪里可以定义等待超时?

知道我的代码中是否存在故障,或者我需要考虑一些具体的考虑因素吗?

【问题讨论】:

    标签: shell amazon-web-services amazon-ec2 aws-opsworks aws-cli


    【解决方案1】:

    aws opsworks describe-instances 命令使用--region us-east-1,但aws ec2 wait 命令使用--region ap-southeast-1。您确定您等待的实例位于 ap-southeast-1 而不是 us-east-1 中吗?

    【讨论】:

    • Opsworks 操作始终必须使用 us-east-1,无论服务器位于哪个区域,而 EC2 和其他基础服务在每个区域都公开。
    猜你喜欢
    • 2014-05-08
    • 2023-03-29
    • 2013-01-09
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 2019-06-05
    • 2015-05-26
    • 2013-03-24
    相关资源
    最近更新 更多