Isso não é algo que implementei pessoalmente, mas minha estratégia seria algo como o seguinte:
baldes S3
Vários outros provedores implementam a API do S3, por exemplo, Dream Objects ou Google Could Storage . Eu simplesmente tenho um script que itera sobre um balde e coloca os objetos para outro provedor. Para economizar largura de banda, você pode verificar a soma de verificação.
EBS
Eu programaticamente clonaria um snapshot do EBS, montaria ele na sua instância executando os backups, usaria dd ou similar para criar uma imagem, compactá-la e enviá-la para o S3. Então, obviamente, inclua a imagem como parte de seus backups do S3.
RDS
Similar ao EBS, mas ao invés de clonar o disco eu usaria o snapshot para lançar uma nova instância e então executaria o mysqldump (ou qualquer que seja a ferramenta equivalente para o seu RDBMS) e carregue o resultado para o S3.
Alternativamente, você pode ter um escravo externo para sua instância do RDS e mantenha isso com backup externo.
Você poderia assar esses scripts em uma AMI que os executa na inicialização e, em seguida, encerra, basta iniciar essa instância, no entanto, com frequência, você precisa de seus backups.