--- AWSTemplateFormatVersion: '2010-09-09' Description: >- (WWPS-GLS-WF-GWFCORE-EFS) Creates EFS file system and mount targets to a list of subnets Parameters: VpcId: Type: AWS::EC2::VPC::Id Description: 'The VPC to create security groups and deploy AWS Batch to. NOTE: Must be the same VPC as the provided subnet IDs.' SubnetIds: Type: List Description: 'Subnets you want your batch compute environment to launch in. We recommend private subnets. NOTE: Must be from the VPC provided.' NumberOfSubnets: Type: Number Description: Number of subnets to launch into. Should correspond to the length of Subnet Ids MinValue: 1 MaxValue: 6 Conditions: 2SubnetCondition: !Or - !Equals [!Ref 'NumberOfSubnets', '2'] - !Condition '3SubnetCondition' 3SubnetCondition: !Or - !Equals [!Ref 'NumberOfSubnets', '3'] - !Condition '4SubnetCondition' 4SubnetCondition: !Or - !Equals [!Ref 'NumberOfSubnets', '4'] - !Condition '5SubnetCondition' 5SubnetCondition: !Or - !Equals [!Ref 'NumberOfSubnets', '5'] - !Condition '6SubnetCondition' 6SubnetCondition: !Equals [!Ref NumberOfSubnets, '6'] Resources: SharedDataFileSystem: Type: AWS::EFS::FileSystem Properties: PerformanceMode: generalPurpose Encrypted: true FileSystemTags: - Key: Name Value: SharedDataGenomics MountTargetSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: VpcId: !Ref VpcId GroupDescription: Security group for mount target SecurityGroupIngress: - IpProtocol: tcp FromPort: 2049 ToPort: 2049 CidrIp: 0.0.0.0/0 MountTargetSubnet1: Type: AWS::EFS::MountTarget Properties: FileSystemId: !Ref SharedDataFileSystem SubnetId: !Select [0, !Ref SubnetIds] SecurityGroups: - !Ref MountTargetSecurityGroup MountTargetSubnet2: Type: AWS::EFS::MountTarget Condition: 2SubnetCondition Properties: FileSystemId: !Ref SharedDataFileSystem SubnetId: !Select [1, !Ref SubnetIds] SecurityGroups: - !Ref MountTargetSecurityGroup MountTargetSubnet3: Type: AWS::EFS::MountTarget Condition: 3SubnetCondition Properties: FileSystemId: !Ref SharedDataFileSystem SubnetId: !Select [2, !Ref SubnetIds] SecurityGroups: - !Ref MountTargetSecurityGroup MountTargetSubnet4: Type: AWS::EFS::MountTarget Condition: 4SubnetCondition Properties: FileSystemId: !Ref SharedDataFileSystem SubnetId: !Select [3, !Ref SubnetIds] SecurityGroups: - !Ref MountTargetSecurityGroup MountTargetSubnet5: Type: AWS::EFS::MountTarget Condition: 5SubnetCondition Properties: FileSystemId: !Ref SharedDataFileSystem SubnetId: !Select [4, !Ref SubnetIds] SecurityGroups: - !Ref MountTargetSecurityGroup MountTargetSubnet6: Type: AWS::EFS::MountTarget Condition: 6SubnetCondition Properties: FileSystemId: !Ref SharedDataFileSystem SubnetId: !Select [5, !Ref SubnetIds] SecurityGroups: - !Ref MountTargetSecurityGroup Outputs: EfsId: Value: !Ref SharedDataFileSystem Description: EFS ID