--- AWSTemplateFormatVersion: 2010-09-09 Description: Reference Architecture to host Drupal on AWS - Creates EFS file system Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: File System Parameters Parameters: - EfsSecurityGroup - DataSubnet0 - DataSubnet1 - DataSubnet2 ParameterLabels: EfsSecurityGroup: default: EFS Security Group DataSubnet0: default: Data Subnet for AZ 0 DataSubnet1: default: Data Subnet for AZ 1 DataSubnet2: default: Data Subnet for AZ 2 Parameters: EfsSecurityGroup: Description: Select the EFS security group. Type: AWS::EC2::SecurityGroup::Id DataSubnet0: Description: Select an existing data subnet for AZ 0. Type: AWS::EC2::Subnet::Id DataSubnet1: Description: Select an existing data subnet for AZ 1. Type: AWS::EC2::Subnet::Id DataSubnet2: Description: Select an existing data subnet for AZ 2. Type: AWS::EC2::Subnet::Id Conditions: MoreThan2AZ: !Or [ !Equals [ !Ref 'AWS::Region', us-east-1 ], !Equals [ !Ref 'AWS::Region', us-east-2 ], !Equals [ !Ref 'AWS::Region', us-west-2 ], !Equals [ !Ref 'AWS::Region', eu-west-1 ], !Equals [ !Ref 'AWS::Region', sa-east-1 ], !Equals [ !Ref 'AWS::Region', ap-northeast-1 ], !Equals [ !Ref 'AWS::Region', ap-southeast-2 ] ] Resources: ElasticFileSystem: Type: AWS::EFS::FileSystem Properties: FileSystemTags: - Key: Name Value: !Join [ '', [ 'Drupal / ', !Ref 'AWS::StackName' ] ] PerformanceMode: generalPurpose ElasticFileSystemMountTarget0: Type: AWS::EFS::MountTarget Properties: FileSystemId: !Ref ElasticFileSystem SecurityGroups: - !Ref EfsSecurityGroup SubnetId: !Ref DataSubnet0 ElasticFileSystemMountTarget1: Type: AWS::EFS::MountTarget Properties: FileSystemId: !Ref ElasticFileSystem SecurityGroups: - !Ref EfsSecurityGroup SubnetId: !Ref DataSubnet1 ElasticFileSystemMountTarget2: Condition: MoreThan2AZ Type: AWS::EFS::MountTarget Properties: FileSystemId: !Ref ElasticFileSystem SecurityGroups: - !Ref EfsSecurityGroup SubnetId: !Ref DataSubnet2 Outputs: ElasticFileSystem: Value: !Ref ElasticFileSystem ElasticFileSystemDnsName: Description: DNS name for the EFS file system. Value: !Join [ '.', [ !Ref ElasticFileSystem, 'efs', !Ref 'AWS::Region', 'amazonaws', 'com' ] ] ElasticFileSystemMountCommand: Description: Mount command for mounting the EFS file system. Value: !Join [ '', [ 'sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ', !Join [ '.', [ !Ref ElasticFileSystem, 'efs', !Ref 'AWS::Region', 'amazonaws', 'com:/ /var/www/drupal' ] ] ] ]