Cloudformation: как настроить несколько записей DNS с помощью AWS :: Route53 :: RecordSet

Я использую этот фрагмент облачной информации для сопоставления моего elb с доменным именем:

 "dnsRecord" : {
     "Type" : "AWS::Route53::RecordSet",
     "Properties" : {
         "HostedZoneName" : "apps.acme.com.",
         "Comment" : "DNS name for instance.",
         "Name" : {
             "Fn::Join" : [ "", [
                 {"Ref" : "Hostname"}, "."
             ]]
         },
         "Type" : "CNAME",
         "TTL" : "900",
         "ResourceRecords" : [
             { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ] }
         ]
     }
 }

Мне нужно установить много имен или псевдонимов для этого elb, используя облачную информацию, используя параметр. Я думаю о строке CSV в качестве параметра, но не понимаю, как «перебрать» эту строку CSV, чтобы повторить этот блок «dnsRecord» столько раз, сколько потребуется.

Например, если имя хоста было "fred.apps.acme.com, bertha.apps.acme.com", это установило бы для меня 2 записи DNS для одного и того же elb.

Как я могу это сделать?


person Mike Hogan    schedule 27.01.2015    source источник


Ответы (2)


Итерация над CloudFormation не очень поможет; на самом деле невозможно. Вы можете написать шаблон CFN, чтобы завершить все необходимые ресурсы стека, и использовать пользовательский сценарий или пользовательский сценарий запуска [в python или сценарии оболочки] для итерации необходимой настройки DNS.

Вы можете использовать Depends-On и Wait-Handle, чтобы ввести временную задержку в стеке при создании ELB.

person Naveen Vijay    schedule 27.01.2015

Нет концепции перебора CSV, переданного в качестве параметра. Кроме того, возможность итерации подразумевает, что размер списка не будет известен до создания стека. CloudFormation требует, чтобы каждый ресурс был явно определен. Это означает, что вы не можете передать список переменного размера и создать ресурс AWS :: Route53 :: RecordSet для каждого элемента в списке.

Поскольку для каждого доменного имени потребуется собственный ресурс AWS :: Route53 :: RecordSet, вам потребуется отредактировать шаблон, если вам нужно добавить или удалить домены.

В этой ситуации я бы рекомендовал создать новый AWS :: Route53 :: RecordSet для каждого доменного имени, которое вы хотите сопоставить с вашим ELB.

person Tomasz Kowalski    schedule 20.03.2017