urllib.urlretrieve doesn't raise exceptions for non-200 responses, and doesn't tell us the response code.

s3 returns a mime-type header, which we can use to make sure it wasn't a 404 (which is returned as xml)