Я пытаюсь сделать создание VPC условным в моем скрипте облачной информации.Например, если в параметрах указан идентификатор VPC, я хочу создать все ресурсы в этом VPC, в противном случае создать новый.
Проблема начинается, когда я хочу повторно использовать существующий VPC, но у меня нет способа определить подсети, которые мне нужны для одного из моих ресурсов.Итак, я полагаю, я должен предоставить их в качестве параметров.Но если я предоставлю их в качестве параметров, в случае, когда я хочу создать новый VPC, он будет жаловаться, потому что список идентификаторов подсетей пуст и должен быть действительным.
Ошибка Parameter validation failed: parameter value for parameter name VpcPrivateSubnetIds does not exist. Rollback requested by user.
Невозможно указать фиктивное значение.Есть идеи, как этого добиться?
Вот мой сценарий CF:
VpcId:
Type: String
Description: Give the VPC id if you want to use an existing one. Leave empty for creating a new one.
VpcPublicSubnetIds:
Type: List<AWS::EC2::Subnet::Id>
Description: List of 3 public SubnetIds for the given VPC.
VpcPrivateSubnetIds:
Type: List<AWS::EC2::Subnet::Id>
Description: List of 3 private SubnetIds for the given VPC.
Conditions:
CreateVPC: !Equals [ !Ref VpcId, ""]
Resources:
(...)
Properties:
PrivateSubnetIds: !If
- CreateVPC
- !GetAtt VPCStack.Outputs.PrivateSubnets
- !Join [',', [!Select [0, !Ref VpcPrivateSubnetIds], !Select [1, !Ref VpcPrivateSubnetIds], !Select [2, !Ref VpcPrivateSubnetIds]]]
PublicSubnetIds: !If
- CreateVPC
- !GetAtt VPCStack.Outputs.PublicSubnets
- !Join [',', [!Select [0, !Ref VpcPublicSubnetIds], !Select [1, !Ref VpcPublicSubnetIds], !Select [2, !Ref VpcPublicSubnetIds]]]