AWS CloudFormation在自动缩放组

问题描述:

(已过期Pastbin链接删除)AWS CloudFormation在自动缩放组

不创建初始实例,然后我尝试创建一个堆栈无法创建自动缩放组作为没有创建EC2实例。我如何触发创建初始实例?

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

我相信我能够复制您的症状与您的模板 - 问题可能与您正在使用的AMI有关。我从市场链接中选择AMI作为我区域的参考描述中缩短的URL所引用的区域。我仍然在等待资源创建失败(已经差不多一个小时!),但是其他症状相匹配。

启动时,缩放组在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资源创建失败,所以我没有明确证实这一点。

+0

对不起,我不确定我是否复制了你所看到的内容 - 失败后(花了一个小时!)ASG CREATE_FAILED事件的状态原因是“\t组没有稳定。{current/minSize/maxSize}组大小= {0/2/3}。失败的缩放活动:要使用此AWS Marketplace产品,您需要接受条款并进行订阅。为此,请访问http://aws.amazon.com/marketplace/pp?sku=aw0evgkw8e5c1q413zgy5pjce 。启动EC2实例失败。“,而不是您看到的”收到0 SUCCESS信号(s)出1“错误...如果接受条款没有解决您的问题,请随时取消! –

+0

你好,克里斯。我有同样的错误信息“组没有稳定”。你解决了这个问题吗?我用AWS支持打开了一个案例。 – Perimosh

+0

我相信这个错误意味着ASG中的EC2实例无法初始化 - ASG重试了很多次,但最终因“组未稳定”错误而失败。 EC2实例可能无法初始化的原因很多 - UserData脚本中的错误,AWS Marketplace中的条款和条件要求(如上所述),或过期的或不再可用的AMI ...查看EC2实例中的活动历史记录ASG(当它尝试创建时),并且您应该至少看到一个“失败”记录 - 将其展开以获取有关您的实例的更多信息。 –

请注意 - 请参阅其他答案更可能的罪魁祸首。在第一个问题解决后,将此处留作缺失的configset也可能会导致问题。

的调用的UserData CFN-初始化其引用configset InstallAndRun不存在:

    "/opt/aws/bin/cfn-init ", 
        "   --stack ", { "Ref" : "AWS::StackName" }, 
        "   --resource LaunchConfig", 
        "   --configsets InstallAndRun ", 
        "   --region ", { "Ref" : "AWS::Region" },"\n", 

要使用CFN-init和指定configset,你需要指定的启动配置一个AWS::CloudFormation::Init块元数据,并包含一个引用您希望cfn-init执行的配置元素的configset定义。有关更多详细信息,请参见http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html#aws-resource-init-configsets

举个例子,你需要:

"LaunchConfig" : { 
    "Type" : "AWS::AutoScaling::LaunchConfiguration"  
    "Metadata" : { 
    "AWS::CloudFormation::Init" : { 
     "configSets" : { 
     "InstallAndRun" : [ "config1" ] 
     }, 
     "config1" : { 
     "commands" : { 
      "test" : { 
      "command" : "echo \"$MAGIC\" > test.txt", 
      "env" : { "MAGIC" : "I come from the environment!" }, 
      "cwd" : "~", 
      "test" : "test ! -e ~/test.txt", 
      "ignoreErrors" : "false" 
      } 
     } 
     } 
    } 
    }, 
    "Properties" : { 
    ... 
    } 
} 

没有元数据,CFN-init将失败,并且CFN信号线告诉cloudformation该资源初始化失败。

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

+0

嘿克里斯。没有EC2实例启动,所以我不确定它是如何与用户数据的问题? – AirCombat

+0

您的意思是您在EC2控制台屏幕中看不到EC2实例?这很奇怪 - 但促使我查看cfn-signal的是“从0接收到0 SUCCESS信号”的消息 - 这表明它收到了一个信号,但没有一个表示成功。因为它已经收到信号,我只能猜测用户数据脚本已经执行...世界值得用一些修改后的用户数据测试吗?另一种选择是尝试删除cfn-signal行或用'-e 0'替换'-e $?',无论cfn-init发生什么情况都应​​该指示成功。 –

+0

我只是在尝试排除故障后才添加了cnf-init,为什么没有发生。您应该可以通过运行我的模板进行复制。经过长时间的超时后,接收到的0个接收信号(s)从1中失败。我相信1是由于超时。 – AirCombat

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