我的 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 组名称。希望这能帮到别人 :)