2013-03-03 44 views
0

这是我想要做的。我的cfn模板将用于启动不同类型的EC2实例。微,大等等我可以在Userdata脚本中访问cfn输入参数变量吗?

但基于该实例类型的核心数量,我想在用户数据脚本部分做一些不同的事情。

我打开任一: 1.找出核的数量编程模板 或 2.通过核的数量作为输入参数到模板内。

话虽如此,这里是我的2个问题:

  1. 是否有可能从模板查询系统以获得核心数量?如果是的话,有人可以告诉我如何?

  2. 但更重要的是,是否可以在模板的userdata部分使用此值?

我真的很感谢任何指向正确的方向。

--su

PS:我也问过同样的问题在AWS上论坛也。

回答

0

我不知道有什么办法可以通过编程的方式来发现这个问题,但是你可以肯定的是将一个参数的值插入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.microm1.large等获得AWS实例类型。您可以使用AWS文档来确定实例类型具有多少个核心。不过,我不知道你可以在模板中使用这个结果。您可以编写一个shell脚本,在UserData部分中执行您所需的任何操作。

相关问题