0

这就是我想要做的。我的 cfn 模板将用于启动不同类型的 EC2 实例:微型、大型等。

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

我愿意:

  1. 以编程方式找出模板内的核心数量或
  2. 将核心数作为输入参数传递给模板。

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

  1. 是否可以从模板中查询系统以获取核心数?如果是的话,有人可以告诉我怎么做吗?

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

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

4

1 回答 1

0

我不知道以编程方式发现这一点的任何方法[但见下文],但您当然可以将参数的值插入用户数据部分。这是一个例子:

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 所需的 base 64 编码字符串。

"Fn::Join"接受两个参数:一个要在要加入的字符串之间插入的字符串(这里是一个空字符串),以及要加入的字符串数组。其他字符串中间的"Ref"对象被参数的值替换。

编辑添加:我不知道如何获取核心数,但是您可以使用命令获取 AWS 实例类型

curl http://169.254.169.254/latest/meta-data/instance-type

这将返回一个字符串,如t1.micro,m1.large等。您可以使用 AWS 文档来确定该实例类型具有多少核心。但是,我不知道您可以在模板中使用此结果的任何方式。您可以编写一个 shell 脚本,在 UserData 部分执行您需要的任何操作。

于 2013-03-03T02:53:25.077 回答