Over the course of the last few years, I have become reliant on AWS for running large jobs. The COVID-19 modelling work I was involved with required some high performance computing and AWS is an excellent solution.
There are some great resources for getting started with AWS EC2. I highly recommend the site, Running R on AWS EC2 and Logging into RStudio from Anywhere, for details on how to get an instance with R and RStudio up and running in a step-by-step fashion.
I have created a Bash script (see below) that you can scp to your instance and run. It will set up an instance with R, RStudio IDE that you can log into through a browser, and a Shiny server. Make sure to open port 80 (HTTP) and add custom TCP rules for ports 8787 and 3838 in the security configuration details through your EC2 dashboard. RStudio will run through port 8787 and Shiny through 3838. Also, ensure that you make the script executable with the command: chmod +x aws_R_setup.sh (or whatever you choose to call the bash script).
Once you have run the script, add a user (e.g. sudo adduser rstudiouser) and then add the new user to the sudo group. The commands are at the bottom of the script commented out.
After you have set the user, login to RStudio through your browser using your ec2 address with port 8787 (e.g., ec2-35-183-78-154.ca-central-1.compute.amazonaws.com:8787). And volia! You will have the RStudio IDE running through your browser that you login to using the username and password you created. For the Shiny server, access using port 3838 (e.g., ec2-35-183-78-154.ca-central-1.compute.amazonaws.com:3838).
Of course it is always possible to use an existing AMI on EC2, but having the flexibility to create your own system can sometimes be useful.
#EC2 script for setting up an R instance on AWS totalmem=$(free -g | grep -oP '\d+' | head -n 1) if [ "$totalmem" -lt "2" ]; then sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=2048 sudo /sbin/mkswap /var/swap.1 sudo /sbin/swapon /var/swap.1 sudo sh -c 'echo "/var/swap.1 swap swap defaults 0 0 " >> /etc/fstab' sudo echo "created swap file memory to avoid using bigger instance" fi sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' # Update ubuntu package repo, to get latest R sudo apt -y update sudo apt -y upgrade # Install R sudo apt -y install r-base r-base-dev # Install shiny before shiny-server sudo R -e "install.packages('shiny')" # Install debian package manager, gdebi sudo apt install gdebi-core # Install Shiny Server wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-184.108.40.2068-amd64.deb sudo gdebi shiny-server-220.127.116.118-amd64.deb sudo rm shiny-server-18.104.22.1688-amd64.deb sudo apt -y install libcurl4-openssl-dev sudo apt -y install libssl-dev libxml2-dev libmariadbclient-dev build-essential libcurl4-gnutls-dev # Install RStudio wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-1.4.1717-amd64.deb sudo gdebi rstudio-server-1.4.1717-amd64.deb sudo rm rstudio-server-1.4.1717-amd64.deb sudo R -e "install.packages('RCurl', repos='http://cran.rstudio.com')" sudo R -e "install.packages('devtools', repos='http://cran.rstudio.com')" sudo R -e "install.packages('tidyverse')" sudo apt -y install default-jdk sudo R CMD javareconf # Change permissions for R library sudo chmod 777 -R /usr/local/lib/R/site-library #Now add user info to login RStudio for example: #sudo adduser rstudiouser #Then add rstudiouser to sudo group: #sudo usermod -aG sudo rstudiouser