Thursday, June 16, 2022

Create EFS(Elastic file system) Using Cloudformation

 

What is Amazon Elastic File System?

  • Amazon Elastic File System (Amazon EFS) provides a simple, serverless, set-and-forget elastic file system for use with AWS Cloud services and on-premises resources.
  • It is built to scale on-demand to petabytes without disrupting applications, growing and shrinking automatically as you add and remove files, eliminating the need to provision and manage capacity to accommodate growth.
  • Amazon EFS has a simple web services interface that allows you to create and configure file systems quickly and easily.
  • The service manages all the file storage infrastructure for you, meaning that you can avoid the complexity of deploying, patching, and maintaining complex file system configurations.
  • Amazon EFS supports the Network File System version 4 (NFSv4.1 and NFSv4.0) protocol, so the applications and tools that you use today work seamlessly with Amazon EFS.

Creates an Elastic File System with 3 Mounts

Prerequisites

  1. VPC
  2. 3 Subnets

Create Details

  1. EFS Filesystem
  2. 3 Mount Targets

Steps to create resources in cloudformation

Search Cloudformation in aws console

Create a new Stack

A stack is a collection of AWS resources that you can manage as a single unit. All the resources in a stack are defined by the stack’s AWS CloudFormation template

Save the below code in .yaml format & then upload a file after that click next.

AWSTemplateFormatVersion: '2010-09-09'
Description: Create Elastic File System v20161029-1200
Parameters:
# Ownership
Owner:
Type: String
Default: FirstName LastName
Project:
Type: String
Default: EFS Mount
DeleteAfter:
Type: String
Default: 00/00/201x
# Network
VPC:
Type: AWS::EC2::VPC::Id
Subnet1:
Type: AWS::EC2::Subnet::Id
Subnet2:
Type: AWS::EC2::Subnet::Id
Subnet3:
Type: AWS::EC2::Subnet::Id
# EFS
PerformanceMode:
Type: String
Default: generalPurpose
AllowedValues:
- generalPurpose
- maxIO
Resources:
FileSystem:
Type: AWS::EFS::FileSystem
Properties:
FileSystemTags:
- Key: Name
Value: !Ref AWS::StackName
- Key: Owner
Value: !Ref Owner
- Key: Project
Value: !Ref Project
- Key: DeleteAfter
Value: !Ref DeleteAfter
PerformanceMode: !Ref PerformanceMode
MountTarget1:
Type: AWS::EFS::MountTarget
DependsOn:
- FileSystem
- EfsSecurityGroup
Properties:
FileSystemId: !Ref FileSystem
SubnetId: !Ref Subnet1
SecurityGroups:
- !Ref EfsSecurityGroup
MountTarget2:
Type: AWS::EFS::MountTarget
DependsOn:
- FileSystem
- EfsSecurityGroup
Properties:
FileSystemId: !Ref FileSystem
SubnetId: !Ref Subnet2
SecurityGroups:
- !Ref EfsSecurityGroup
MountTarget3:
Type: AWS::EFS::MountTarget
DependsOn:
- FileSystem
- EfsSecurityGroup
Properties:
FileSystemId: !Ref FileSystem
SubnetId: !Ref Subnet3
SecurityGroups:
- !Ref EfsSecurityGroup
EfsSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Instance to EFS Mount Access
VpcId: !Ref VPC
Tags:
- Key: Name
Value: !Ref AWS::StackName
- Key: Owner
Value: !Ref Owner
- Key: Project
Value: !Ref Project
- Key: DeleteAfter
Value: !Ref DeleteAfter
SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
DependsOn: EfsSecurityGroup
Properties:
GroupId: !Ref EfsSecurityGroup
IpProtocol: "-1"
SourceSecurityGroupId: !Ref EfsSecurityGroup
Outputs:
Owner:
Description: Team or Individual that Owns this Formation.
Value: !Ref Owner
Project:
Description: The project name
Value: !Ref Project
VPC:
Description: Created VPC
Value: !Ref VPC
Subnet1:
Description: Subnet 1
Value: !Ref Subnet1
Subnet2:
Description: Subnet 2
Value: !Ref Subnet2
Subnet3:
Description: Subnet 3
Value: !Ref Subnet3
FileSystem:
Description: FileSystem
Value: !Ref FileSystem
PerformanceMode:
Description: PerformanceMode
Value: !Ref PerformanceMode
MountTarget1:
Description: MountTarget 1
Value: !Ref MountTarget1
MountTarget2:
Description: MountTarget 2
Value: !Ref MountTarget1
MountTarget3:
Description: MountTarget 3
Value: !Ref MountTarget1
# MountTargetDns1:
# Description: MountTarget 1
# Value: !GetAtt MountTarget1.DNSName
# MountTargetDns2:
# Description: MountTarget 2
# Value: !GetAtt MountTarget1.DNSName
# MountTargetDns3:
# Description: MountTarget 3
# Value: !GetAtt MountTarget1.DNSName
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: Ownership
Parameters:
- Owner
- Project
- DeleteAfter
- Label:
default: Network Configuration
Parameters:
- VPC
- Subnet1
- Subnet2
- Subnet3
- Label:
default: EFS Configuration
Parameters:
- PerformanceMode
ParameterLabels:
Owner:
default: Team or Individual Owner
DeleteAfter:
default: Delete After Date
VPC:
default: VPC ID
Subnet1:
default: Subnet 1
Subnet2:
default: Subnet 2
Subnet3:
default: Subnet 3
PerformanceMode:
default: EFS Performance Mode

Give the Name of the stack and define the parameter.

Select Vpc and subnets & then click on next/

Configure the Stack option, provide tags in the key-value pair and then click next

Now Review your stack and then click Create Stack

Now creating a stack

Now your Stack is successfully created

Now you successfully created Aws Efs.

If you don’t know about cloudformation , and how to use that then please read this below article first.

https://techworldwithvijaypatel.medium.com/create-aws-security-hub-sagemaker-pipeline-resource-using-cloudformation-ff2a99fd6d00

So I hope this was very helpful and if you have any doubts or any questions you can write them down in the comment section below and I will try to answer you as soon as I can.

▬▬▬▬▬▬ Connect with me ▬▬▬▬▬▬

Youtube Subscription ► https://bit.ly/2LENtS1

Facebook Page: ► https://www.facebook.com/EasyAWSLearn/

Medium: ► https://techworldwithvijaypatel.mediu...

Dev: ► https://dev.to/easyawslearn

Telegram Channel: ► https://t.me/devtul

No comments:

Post a Comment

Wireless Security Configuration: Protect Your Network Now!

Introduction: In today’s connected world, wireless networks are as common as smartphones, and they’re often the gateway to our personal, pr...