AWS CloudFormation未在Auto Scaling组中创建初始实例

时间:2016-08-18 09:30:02

标签: amazon-web-services amazon-cloudformation

(已删除过去的Pastbin Link)

然后我尝试创建堆栈无法创建Auto Scaling组,因为没有创建EC2实例。如何触发初始实例的创建?

Received 0 SUCCESS signal(s) out of 1. Unable to satisfy 100% MinSuccessfulInstancesPercent requirement

5 个答案:

答案 0 :(得分:2)

我相信我能够使用您的模板复制您的症状 - 问题可能与您正在使用的AMI有关。我从市场链接中为我的区域选择了AMI,参数描述中的缩短网址引用了该AMI。我还在等待资源创建失败(差不多一个小时!)但是否则症状会匹配。

启动时,缩放组在ASG控制台中可见,但有0个实例。但是,“活动历史记录”选项卡显示了许多尝试启动实例,但都失败了:

ASG console screenshot

所有这些的描述是:

  

描述:启动一个新的EC2实例。现状原因:在   要使用此AWS Marketplace产品,您需要接受条款和   订阅。要这样做,请访问   http://aws.amazon.com/marketplace/pp?sku=aw0evgkw8e5c1q413zgy5pjce。   启动EC2实例失败。

您是否已接受这些条款并在市场上订阅了该AMI?这里有更多详细信息:https://aws.amazon.com/marketplace/help/200799470#topic1

注意:我相信你只会在控制台中看到ASG,而cloudformation正在等待它 - 在cfn回滚后,asg(以及活动历史记录)将会消失。由于我还在等待asg资源创建失败,我还没有确定这一点。

答案 1 :(得分:2)

验证将安装AutoScalingGroup实例的子网可以使用NAT网关或Internet网关连接到Internet。这是因为实例在堆栈的UserData语句中从Internet安装了一些包。

答案 2 :(得分:0)

注意 - 请查看更可能的罪魁祸首的其他答案。将此保留为缺少的配置集也可能在第一个问题解决后导致问题。

UserData调用cfn-init,它引用了一个不存在的配置集<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="table"> <div class="rowGroup"> <div class="row"> <span class="cell cas4">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> <div class="rowGroup"> <div class="row"> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> <span class="cell">X</span> </div> </div> </div>

InstallAndRun

要使用cfn-init并指定配置集,您需要在启动配置元数据中指定一个 "/opt/aws/bin/cfn-init ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig", " --configsets InstallAndRun ", " --region ", { "Ref" : "AWS::Region" },"\n", 块,并包含一个引用您希望cfn-init执行的配置元素的配置集定义。有关详细信息,请参阅http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html#aws-resource-init-configsets

例如,您需要:

AWS::CloudFormation::Init

如果没有该元数据,cfn-init将失败,并且cfn-signal行告诉cloudformation资源初始化失败。

作为诊断过程,尝试删除对cfn-init和cfn-signal的引用,并查看实例是否启动。如果确实如此,并且您确实有一些您想要使用cfn-init定义的实例配置步骤,请定义元数据块以指定步骤,并将对cfn-init和cfn-signal的调用添加回用户数据。

答案 3 :(得分:0)

我确信有人可能会对此答案有所帮助。创建Auto Scaling Group时,我遇到了类似的问题,我尝试调试日志(cfn-init),在该日志中我找不到任何错误。我已在body-parser中删除了Auto Scaling组中的创建策略和更新策略。 LB,启动配置,子网,SG等所有其他东西都创建成功,但是我在这个特定问题上停留了一段时间。

答案 4 :(得分:0)

如果您使用 CreatePolicy ,则 cloudformation 服务期望并返回通知(如来自 cfn-init 的通知)以确认成功。如果不是,它将继续抛出错误“从 2 个中接收到 0 个成功信号。无法满足 100% MinSuccessfulInstancesPercent 要求”

最好的解决方法是让 cfn-init 向 cloudformation 报告成功。如果您不使用 cfn-init 并遵循 Userdata 部分中的引导脚本,最好的方法是一起避免 CreatePolicy。