Below are the basic steps to set up an FTP on AWS EC2 instance (I’m using Amazon Linux AMI)

Step 1: Getting started

Login to your AWS EC2 instance via Terminal

sudo yum update -y // To update your server to latest stable release
sudo yum install vsftpd // To install the ftp plug-ins.

Step 2: Open up the FTP ports on your EC2 instance

Next, you’ll need to open up the FTP ports on your EC2 server. Log in to the AWS EC2 Management Console and select the security group assigned to your EC2 instance. Then edit the Inbound setting to add 2 Custom TCP Rules with port ranges 20 – 21 and 64000 – 64321.

Step 3: Update the vsftpd.conf file

Edit your vsftpd conf file by typing

sudo vi /etc/vsftpd/vsftpd.conf

Disable anonymous FTP by changing this line:

anonymous_enable=NO

Then add the following lines to the bottom of the vsftpd.conf file:

pasv_enable=YES
pasv_min_port=64000
pasv_max_port=64321

Your vsftpd.conf file should look something like the following:

anonymous_enable=NO
local_enable=YES
write_enable=YES

allow_writeable_chroot=YES
file_open_mode=0777
local_umask=002

listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

pasv_enable=YES
pasv_min_port=64000
pasv_max_port=64321

To save changes, press escape, and then type:wq, then hit enter.

Step 4: Restart vsftpd and create an FTP user

Restart vsftpd by typing:

sudo /etc/init.d/vsftpd restart
OR
sudo systemctl restart vsftpd
OR
sudo service vsftpd restart

Create a new user

adduser awsftpuser
passwd awsftpuser
sudo usermod -d /etc/httpd/ awsftpuser

NOTE: vsftpd doesn’t automatically start when your server boots. If you’re like me, that means that after rebooting your EC2 instance, you’ll feel a moment when FTP seems to be broken — but in reality, it’s just not running! To fix that run the below command:

sudo chkconfig --level 345 vsftpd on

Reference:
https://medium.com/tensult/configure-ftp-on-aws-ec2-85b5b56b9c94
https://serverfault.com/questions/201305/default-owner-permissions-of-created-files-via-vsftpd