This problem can be solved by adding the host name to /etc/hosts or overriding the hostname when the DHCP client gets a lease.
On AWS if you're autoscaling neither solution is palatable.
Instead you can specify a script like the following as User Data (under "Advanced" if you're using the AWS console to launch your instance) to append the AWS generated hostname to the /etc/hosts file. The /etc/hosts file remains intact between reboots but the hostname can change which means this doesn't solve long lived instances, but it works with autoscaling where reboots shouldn't typically occur.
#!/bin/bash HOSTNAME=`hostname` ETC_HOSTS=${1:-/etc/hosts} if ! grep $HOSTNAME $ETC_HOSTS > /dev/null ; then if grep "127.0.0.1" $ETC_HOSTS > /dev/null ; then sed -i "s/127\.0\.0\.1.*$/& $HOSTNAME/" $ETC_HOSTS else echo "127.0.0.1 localhost $HOSTNAME" >> $ETC_HOSTS fi fi
For a longer term solution you can drop the script's contents into /etc/rc.local so it runs on startup.