使用 Autoscale 在 CloudFormation 中进行引导

使用 Autoscale 在 CloudFormation 中进行引导

我的 CloudFormation 模板创建了一个自动缩放组并使用实用程序脚本 /opt/aws/bin/cfn-init 对其进行引导。当我从模板中删除引导部分时,自动缩放可以毫无问题地创建,但我添加它时 CloudFormation 堆栈失败并在 /var/log/cloud-init.log 中添加行:

Error: AutoScalingGroupName does not specify any metadata

上面的行紧接着以下命令:

/opt/aws/bin/cfn-init --verbose --configsets orderedConfig --region us-east-1 --stack AS15 --resource AutoScalingGroupName --access-key XXXXXXXXXXXXX --secret-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

深入挖掘一下,在 cfn-init 中我在退出的地方添加了以下几行:

from pprint import pprint
pprint(vars(detail))

运行上一个 cfn-init 命令时,我得到了以下跟踪:

{'_description': None,
 '_lastUpdated': datetime.datetime(2012, 7, 12, 14, 52, 42),
 '_logicalResourceId': u'AutoScalingGroupName',
 '_metadata': None,
 '_physicalResourceId': u'AS15-AutoScalingGroupName-HNPOXXXXXXXX',
 '_resourceStatus': u'CREATE_COMPLETE',
 '_resourceStatusReason': None,
 '_resourceType': u'AWS::AutoScaling::AutoScalingGroup',
 '_stackId': u'arn:aws:cloudformation:us-east-1:XXXXXXXXXXXXX:stack/AS15/XXXXXXXX-cc30-11e1-XXXXXX-XXXXXXXXXX',
 '_stackName': u'AS15'}

如您所见,元数据字段为空,这就是无法创建堆栈的原因。cfn-init 与 autoscale 一起使用时是否有任何已知的副作用?

答案1

我刚刚明白了!cfn-init 脚本的参数 --resource 必须设置为启动配置名称,而不是 AutoScale 组名称。希望这能帮到别人 :)

相关内容