Я создаю стек CFN для нескольких доменов.Домен не с реестром AWS, а сторонним.
Я хочу, чтобы список серверов имен из SOA был частью стека Outputs.Однако, поскольку они не возвращаются в виде строки, но, согласно документам, это «набор», я не могу понять, как извлечь и вернуть их.
Подробности:
Согласно документам для AWS::Route53::HostedZone
, вы можете получить список серверов имен с
Возвращаемыми значениями
[...]
Fn :: GetAtt
Fn :: GetAtt возвращает значение для указанного атрибута этого типа.Ниже приведены доступные атрибуты и примеры возвращаемых значений.
NameServers
Returns the **set** of name servers for the specific hosted zone. For example: ns1.example.com.
This attribute is not supported for private hosted zones.
Итак, я попытался сделать:
Resources:
MyZone:
Type: 'AWS::Route53::HostedZone'
Properties:
Name: my.domain.
...
Outputs:
MyZone:
Value: !Ref MyZone
MyZoneServers:
Value: !GetAtt MyZone.NameServers
, но это дает:
An error occurred (ValidationError) when calling the UpdateStack operation: Template format error: The Value field of every Outputs member must evaluate to a String.
Когда я вывожу только ссылку на зону, она отлично работает и получает строку Z ... для зоны.
Я пробовал различные другие приемы и подходы, в основномс различными внутренними функциями, такими как !Split
, !Select
и т. д. Нигде я не могу найти, что это за «набор»: список?строка через запятую?(в этом случае !Split
должно работать)
Я мог бы получить серверы имен через функцию описания Route53 после создания стека, но мне кажется, что я упускаю что-то совершенно очевидное, поэтому не хочудобавить этот дополнительный шаг.