Shouldn't you try to delete the S3 file first? If the RawMessage.delete(self) raises any exception, then the file is left over dangling in S3 land forever.