我不知道有什么办法可以通过编程的方式来发现这个问题,但是你可以肯定的是将一个参数的值插入userdata部分。这里有一个例子:
UserData: {
"Fn::Base64": {
"Fn::Join: [
"",
[
"all of the script up to the missing value",
{"Ref": "NumberOfCoresParameterName"},
"all of the script after the missing value"
]
]
}
}
在这个例子中,"NumberOfCoresParameterName
是你给您插入值的参数的名称。
"Fn::Base64"
函数将其值转换为UserData所需的基本64编码字符串。
"Fn::Join"
需要两个参数:要加入的字符串之间插入的字符串(这里是一个空字符串)以及要加入的字符串数组。其他字符串中间的"Ref"
对象将被替换为参数的值。
编辑补充:我不知道如何获得核心数量,但你可以用命令
curl http://169.254.169.254/latest/meta-data/instance-type
这将返回一个字符串像t1.micro
,m1.large
等获得AWS实例类型。您可以使用AWS文档来确定实例类型具有多少个核心。不过,我不知道你可以在模板中使用这个结果。您可以编写一个shell脚本,在UserData部分中执行您所需的任何操作。