Cloudformation ECS кластер
Я пытаюсь написать шаблон формирования облака, который создаст конфигурацию запуска, ASG, кластер ECS и зарегистрирует экземпляры ec2 в ASG для указанного кластера.
У меня есть длинный файл userdata.sh, который используется для настройки конфигурации запуска.
Поместив эти пользовательские данные в файл yaml, т.е.
...
UserData:
Fn::Base64: !Sub |
#!/bin/bash
...
это выглядит довольно ужасно. Кроме того, когда я пытаюсь вставить имя кластера в агент ecs ${ECSCluster} с помощью Sub, я получаю "имена переменных в синтаксисе Fn::Sub должны содержать только буквенно-цифровые символы, символы подчеркивания, точки и двоеточия". Переменные окружения в моих пользовательских данных принимают ту же форму ${ENV_VARIABLE}.
Я попытался передать файл пользовательских данных в стек AWS Cloudformation, но получил сообщение "Ошибка формата шаблона: YAML не правильно сформирован".
Каков рекомендуемый способ передачи сложного файла userdata.sh в CFT таким образом, чтобы вы могли добавить имя кластера в конфигурацию ecs-agent?
2 ответа
Ошибка просто заявляет, что ей не нравится, как вы ссылаетесь на свою переменную в Fn::Sub
, Вместо $(ECSCluster)
это должно быть ${ECSCluster}
, Смотрите примеры в документации.
Это может помочь кому-то еще, у кого есть подобные проблемы. Эта ошибка может произойти, даже если вы неправильно расставили закрывающие скобки переменных, например
- !Sub 'https://sqs.${AWS::Region}.amazonaws.com/${AWS::AccountId/${SQSName}'
В приведенном выше коде } отсутствует в AccountId.