Amazon cloudformation 在堆栈中创建所有资源之前,如何输出堆栈创建成功信息

Amazon cloudformation 在堆栈中创建所有资源之前,如何输出堆栈创建成功信息,amazon-cloudformation,Amazon Cloudformation,我正在尝试使用aws cloudformation create stack--stack name--模板体file://...创建堆栈。它在我执行命令时立即输出堆栈id。但堆栈所需的资源仍在创建中 在创建所有资源之前,我想输出一些消息 我不想在循环中描述堆栈。并输出消息,直到得到堆栈创建完成信号。谷歌云的产品与AWS::CF类似 gcloud deployment-manager deployments create [stack_name] 此命令允许我们指定异步开关: --async

我正在尝试使用
aws cloudformation create stack--stack name--模板体file://...
创建堆栈。它在我执行命令时立即输出堆栈id。但堆栈所需的资源仍在创建中

在创建所有资源之前,我想输出一些消息


我不想在循环中描述堆栈。并输出消息,直到得到堆栈创建完成信号。

谷歌云的产品与AWS::CF类似

gcloud deployment-manager deployments create [stack_name]
此命令允许我们指定异步开关:

 --async
    Return immediately and print information about the Operation in
    progress rather than waiting for the Operation to complete.
    (default=False)
默认情况下,gcloud命令不会在异步模式下执行,事实上,它几乎完全按照您在这里的建议执行。启动堆栈时,我必须等待整个过程完成,然后才能看到“stack created/failed”(堆栈已创建/失败)消息

据我所知,AWS::CF没有这样的函数。默认情况下,aws cli似乎以异步模式启动进程

但是,尽管如此,gcloud cli命令似乎正在执行您所说的不希望执行的操作:在循环中查询API以确定堆栈创建过程的状态


是否有原因使您无法编写脚本来查询AWS::CF API的堆栈创建状态

在初始创建堆栈请求之后,您需要请求另一个堆栈:

 aws cloudformation wait stack-create-complete --stack-name $STACK_ID_FROM_CREATE_STACK
来自aws文档

等待堆栈状态为“创建\完成”。它将每30天进行一次投票 秒,直到达到成功状态。这将退出 120次检查失败后的返回代码为255


在运行
aws cloudformation create stack
之后,我还需要在bash脚本中等待。我对使用aws cloudformation wait stack create complete命令犹豫不决,因为它最多只能轮询60分钟(120次30秒)。此外,我不想运行测试来查看如果堆栈最终处于“CREATE_COMPLETE”以外的状态,它将如何运行。因此,我在bash中写下了自己的等待,如下所示:

aws --region ${AWS_REGION} --profile ${AWS_PROFILE} cloudformation create-stack --template-body ${STACK_TEMPLATE} --stack-name ${STACK_NAME}
if [[ $? -eq 0 ]]; then
    # Wait for create-stack to finish
    echo  "Waiting for create-stack command to complete"
    CREATE_STACK_STATUS=$(aws --region ${AWS_REGION} --profile ${AWS_PROFILE} cloudformation describe-stacks --stack-name ${STACK_NAME} --query 'Stacks[0].StackStatus' --output text)
    while [[ $CREATE_STACK_STATUS == "REVIEW_IN_PROGRESS" ]] || [[ $CREATE_STACK_STATUS == "CREATE_IN_PROGRESS" ]]
    do
        # Wait 30 seconds and then check stack status again
        sleep 30
        CREATE_STACK_STATUS=$(aws --region ${AWS_REGION} --profile ${AWS_PROFILE} cloudformation describe-stacks --stack-name ${STACK_NAME} --query 'Stacks[0].StackStatus' --output text)
    done
fi

你知道如果堆栈进入CREATE\u失败会发生什么吗?该命令是否仍需要60分钟(30秒*120)才能失败,或者如果堆栈进入CREATE_FAILED状态就会失败?我经常遇到Rate excelled异常。有没有办法配置轮询间隔?