Create a p2.xlarge instance, which I found is the best balance between performance and price. Make sure it’s ubuntu based.

Once ready, SSH into it and prepare it to render scenes:

sudo apt-get update
# need the same gcc-compiler as the kernel uses, or so NVidia says
sudo apt install -y gcc=4:9.3.0-1ubuntu2 make libgl1-mesa-glx libxi6 libxrender1
# download and install the NVidia drivers
chmod +x
sudo ./
# manually go through the install options
# install latest Blender
sudo snap install blender --classic
# create the script to force the use of GPU
cat << 'EOF' >
import bpy
prop = bpy.context.preferences.addons['cycles'].preferences
prop.compute_device_type = 'CUDA'
for device in prop.devices:
    if device.type == 'CUDA':
        device.use = True
bpy.context.scene.cycles.device = 'GPU'
for scene in
    scene.cycles.device = 'GPU'

To upload files into it: Uploading files to AWS instances.

To render a scene:

# start a detached screen so you won't lose progress when disconnecting
screen -S myRenderingSession
# start blender rendering
blender -b blenderFile.blend -P -a
# if you had lost the connection and need to reconnect to that screen session
screen -d -r
# if you need to start blender again but don't want to start from scratch, but instead, frame 10
blender -b blenderFile.blend -P -s 10 -a