четверг, 27 февраля 2020 г.

Немного про говнокод в aws

Есть уже рабочий стэк, который трогать не хочется, и нужно задеплоить 1 новую машину, для этого заводим новый VPC. Причём уже есть ASG+LaunchConfig где всё деплоится как надо, но тут задача, где больше 1 сервера точно не понадобится, vpn, jenkins итд, много когда более 1 машины просто не нужно.
Открываем "простой" пример, оф. пример, делаем по аналогии, запускаем cfn. На выходе ошибка
Value () for parameter groupId is invalid. The value cannot be empty (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterValue; Request ID: ...
Открываем доку и видим
[EC2-Classic, default VPC] The names of the security groups. For a nondefault VPC, you must use security group IDs instead.

Думаем, при чём тут это, находим пост (2), заменяем 
"SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ],
на
"SecurityGroupIds" : [ { "Fn::GetAtt" : [ "InstanceSecurityGroup", "GroupId" ] }],
Наслаждаемся ошибкой
Security group sg-059f48c4cb6c45ad2 and subnet subnet-8206c0d8 belong to different networks. Потому что в SG у нас корректно замапилась группа и VPC, а тут взят дефолтный параметр (помним, что у нас иной VPC?). Со злости удаляем вообще SecurityGroupIds, запускаем, радуемся что всё создалось. А потом идём в управление серверами.. и видим что VPC - default и SG пустой!
Вообще, если посмотреть в параметры, там есть LaunchTemplate. Но пока продолжать разгребать эти конюшни.
Судя по всему, тут роляет именно SecurityGroupIds + SubnetId, про что нигде внятно не сказано! Если будет SecurityGroups+SubnetId (второе на верхнем уровне) то будет ошибка
The parameter groupName cannot be used with the parameter subnet (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination;
 Хотя можно попробовать вынести SubnetId в NetworkInterfaces (с обвязкой, читаем доку),  и с SecurityGroups...

Комментариев нет:

Отправить комментарий