У меня есть шаблон формирования облака (mainVPC), который создает несколько подсетей в VPC и экспортирует подсети с именами "PrivateSubnetA", "PrivateSubnetB" ...
У меня есть другой шаблон формирования облака, который создает DBSubnetGroup. Я хочу использовать «PrivateSubnetA», «PrivateSubnetB» в качестве значений по умолчанию, если пользователь не предоставляет данные. CloundFormation не поддерживает импортированные значения в параметрах. Поэтому я поставил некоторое значение по умолчанию (XXXX) и имел раздел условия, чтобы посмотреть, предоставил ли пользователь какой-либо ввод
Conditions:
userNotProvidedSubnetA: !Equals
- !Ref PrivateSubnetA
- XXXX
userNotProvidedSubnetB: !Equals
- !Ref PrivateSubnetB
- XXXX
Это помогает мне выяснить, предоставил ли пользователь данные. Теперь я хочу использовать значения по умолчанию, если пользователь не предоставил значения, иначе используйте предоставленные пользователем значения.
ниже приведен код для этого
DBSubnetGroup:
Type: 'AWS::RDS::DBSubnetGroup'
Properties:
DBSubnetGroupDescription: RDS Aurora Cluster Subnet Group
SubnetIds:
- !If
- userNotProvidedSubnetA
- Fn::ImportValue:
!Sub '${fmMainVpc}-PrivateSubnetA'
- !Ref PrivateSubnetA
- !If
- userNotProvidedSubnetB
- Fn::ImportValue:
!Sub '${fmMainVpc}-PrivateSubnetB'
- !Ref PrivateSubnetB
Это происходит с ошибкой «Ошибка шаблона: атрибут в Fn :: ImportValue не должен зависеть от каких-либо ресурсов, импортируемых значений или Fn :: GetAZs».
ImportValue больше нигде в шаблоне не используется.
Есть ли способ использовать экспортированные значения в качестве значений по умолчанию (значения по умолчанию не могут быть жестко закодированы, они приходят как экспортированные значения из прогона другого стека), в то же время предоставляя возможность пользователям предоставлять свои собственные значения (для создания ресурсы).
Спасибо.