I think Fish is fantastic, but just can't use it because so many things rely on either Bash or Zsh. I've settled for a modest ZSH setup with Prezto and I'm pretty happy.
That being said, I don't go and convert the shell of all my AWS instances to Fish. I just keep my local shell as Fish.
One thing I do differently than most is I don't make fish my system-wide default shell. I leave that as whatever the system default is. Instead I just make fish the default shell within the terminal emulator I use.
Never had an issue with it, and it is much easier to setup as well.
You can also set Fish to start up after bashrc (or whatever), so that you don't have to translate all your startup stuff.