Могу ли я получить доступ к переменной входного параметра cfn в сценарии Userdata?

Вот что я хочу сделать. Мой шаблон cfn будет использоваться для раскрутки разных типов экземпляров EC2. микро, большой и т. д. и т. д.

Но, основываясь на количестве ядер этого типа экземпляра, я хочу сделать некоторые вещи по-другому в разделе сценария userdata.

Я открыт для: 1. определения количества ядер программно внутри шаблона или 2. передачи числа ядер в качестве входного параметра в шаблон.

Сказав это, вот мои 2 вопроса:

  1. Можно ли запросить систему из шаблона, чтобы получить количество ядер? Если да, может кто-нибудь показать мне, как?

  2. Но что еще более важно, возможно ли использовать это значение в разделе пользовательских данных шаблона?

Я был бы очень признателен за любые указатели в правильном направлении.

--su

PS: я задавал тот же вопрос на форумах aws.

1 ответ

Решение

Я не знаю какого-либо способа обнаружить это программно [но смотри ниже], но вы, безусловно, можете вставить значение параметра в раздел 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" функция преобразует свое значение в строку, закодированную в формате base 64, необходимую для UserData.

"Fn::Join" принимает два параметра: строку для вставки между теми, к которым вы присоединяетесь (здесь это пустая строка), и массив строк для присоединения. "Ref" объект в середине других строк заменяется значением параметра.

Отредактировано, чтобы добавить: я не знаю, как получить количество ядер, но вы можете получить тип экземпляра AWS с помощью команды

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

Это вернет строку как t1.micro, m1.largeи т. д. Вы можете использовать документацию AWS для определения количества ядер этого типа. Однако я не знаю, как вы можете использовать этот результат в шаблоне. Вы можете написать сценарий оболочки, который сделает все, что вам нужно, в разделе UserData.

Другие вопросы по тегам