Полиморфизм в терминах кодирования - это когда ваш объект может существовать как несколько типов через наследование и т. д. Если вы создадите класс с именем «Shape», который определяет количество сторон вашего объекта, тогда вы можете создать новый класс, который наследует его как «Квадрат». Когда вы впоследствии создадите экземпляр «Квадрата», вы можете отбросить его назад и вперед от «Shape» до «Square» по мере необходимости.
Это не совсем тот ответ, который вам нужен. Но в целом вы можете использовать Conditions
для этого. В своем шаблоне вы определяете свое условие в разделе Conditions
и используете его для условного создания ресурса. например,
Parameters:
EnvironmentSize:
Type: String
Default: Micro
AllowedValues:
- Micro
- Small
- Medium
- AuroraCluster
Conditions:
isntAuroraCluster:
!Not [!Equals [!Ref EnvironmentSize, "AuroraCluster"]]
DBInstance:
Type: AWS::RDS::DBInstance
Condition: isntAuroraCluster
Properties:
DBInstanceClass: !FindInMap [InstanceSize, !Ref EnvironmentSize, DB]
<Rest of properties>
Здесь my RDS DBinstance
создается только, если my environment size
не AuroraCluster
.
Если вы не найдете лучшего решения, вы можете принять это за пользовательский ввод (создавать набор записей или нет) используйте это как условие для создания вашего ресурса. Надеюсь, это поможет.
Лучший способ сделать это - сделать следующее:
Вы можете получить возвращаемое значение пользовательского ресурса с помощью! GetAtt
Более подробную информацию можно найти на веб-сайтах AWS, касающихся пользовательского ресурса: https: // docs .aws.amazon.com / AWSCloudFormation / latest / UserGuide / template-custom-resources.html https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn- customresource.html