If you are getting the error you list then you are not specifying "ubuntu@" in the scp command, or you have copied the /root/.ssh/authorized_keys file to /home/ubuntu/.ssh/authorized_keys (which would be bad as you could then not log in with ssh).
It is true that once you do start specifying "ubuntu@" you will get a permissions error, but you can get around this using a command like this:
rsync -vazSHAX --rsync-path "sudo rsync" LOCALILE ubuntu@HOST:/var/www/REMOTEFILE
The key here is the --rsync-path option.
The rsync command will even let you copy whole directory trees as in:
rsync -vazSHAX --rsync-path "sudo rsync" LOCALDIR/ ubuntu@HOST:REMOTEDIR/
If you started the instance with a keypair generated by EC2 then you may also need to specify this option in rsync pointing to the local copy of the downloaded ssh key:
--rsh "ssh -i KEYPAIR.pem"
Here's an article I wrote about how to use sudo, ssh, rsync on Ubuntu EC2 instances:
Using sudo, ssh, rsync on the Official Ubuntu Images for EC2
http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync
Here's an article where I explain how to upload your default personal ssh key to EC2 so that ssh and rsync don't need extra identity options:
Uploading Personal ssh Keys to Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys