Могу ли я получить доступ к переменной входного параметра cfn в сценарии Userdata?
Вот что я хочу сделать. Мой шаблон cfn будет использоваться для раскрутки разных типов экземпляров EC2. микро, большой и т. д. и т. д.
Но, основываясь на количестве ядер этого типа экземпляра, я хочу сделать некоторые вещи по-другому в разделе сценария userdata.
Я открыт для: 1. определения количества ядер программно внутри шаблона или 2. передачи числа ядер в качестве входного параметра в шаблон.
Сказав это, вот мои 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.