【问题标题】:CloudFormation Error: WaitCondition timed out. Received 0 conditions when expecting 1CloudFormation 错误:WaitCondition 超时。期望 1 时收到 0 个条件
【发布时间】:2014-02-12 07:30:48
【问题描述】:

我花了很多时间来弄清楚为什么我的 CloudFormation 模板使用 WaitCondition 失败。模板错误:WaitCondition timed out. Received 0 conditions when expecting 1。请注意,我确实确保我的 AMI 在我的 AMI 中预安装了 cfn-signal 命令。

我附上了我的模板截图:

我搜索了一下,发现有些人有同样的问题,例如:http://virtuallyhyper.com/2013/02/cloudformation-waitcondition-timed-out-error/。但是,就我而言, cfn-signal 命令确实存在。所以直到现在我仍然不知道如何解决这个问题。

谢谢

【问题讨论】:

  • 请注意,即使我使用它也会失败:sudo cfn-signal。
  • 不是“为什么会发生错误”的一部分,但是你想用这个等待条件实现什么?

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

好的,问题是因为您使用的是自动缩放启动配置。等待信号仅在创建真实实例时才真正起作用。否则云形成创建扩展组,并等待仅在您的扩展组决定需要扩展一个或多个实例后创建的实例。不幸的是,由于伸缩组的其余部分正在等待(通过具体实例)发出信号,伸缩组永远不会注册,因此永远不会创建实例。一种死锁 - 或者在列表中 - 一段非常长的时间迫使超时。

  • Cloud Formation 在发出等待信号之前不会完成伸缩组的注册
  • 只有在注册伸缩组并创建实例后才会发出等待信号。

如果您删除启动配置并让它创建一个具体实例 - 那么您的等待条件就会发出信号。

【讨论】:

  • 这对我来说似乎是正确的答案。我想知道@Nam Nguyen 在这里试图实现的用例是什么。让 CFN 等待 ASG 中的实例毫无意义。
【解决方案2】:

实例是否在 EC2 上启动?如果是,您的实例能否到达您正在运行 Cloud Formation 的节点?我遇到了这些问题,发现由于我在防火墙后面,AWS 实例无法访问我的节点,并且节点在等待实例重新连接时超时。

【讨论】:

  • 嗨@johhny,在这种情况下,我认为防火墙不是问题。
【解决方案3】:

您不应该在 UserData 脚本中使用 sudo。 They are run as root.

我有几个想法:

在我见过的所有示例中,以及在我自己的模板中,我使用 cfn-init 的完整路径:

  • /opt/aws/bin/cfn-init
  • /opt/aws/bin/cfn-signal

您是否尝试过使用不带“-c install”的 cfn-init 命令?

【讨论】:

  • 谢谢@Edwin,我会试试的。
  • 我尝试了你建议的所有方法:cfn-initcfn-signal 的绝对路径,取出sudo,取出-c install,但仍然不起作用。您还有其他导致错误的想法吗?谢谢
  • 看起来你所能做的就是检查日志。在模板回滚之前 ssh 进入实例并检查 /var/log/cfn-init.log
  • 请注意,就我而言,我有自动缩放器。我不确定 WaitCondition 的“DependsOn”属性是否正确。
【解决方案4】:

我遇到了同样的问题并尝试了上面的所有方法。我把等待超时改成3000,成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多