The 31-year-old switch-hitter will be in his third season with the Cardinals.
Miles, who was traded by Colorado to St. Louis in 2005, played second base, third base, shortstop, in the outfield and even pitched in two games in 2007. He also hit .290.
"Aaron has shown a great deal of versatility with our club over the past two years," Cardinals General Manager John Mozeliak said.
"He has proven to be a quality player both as a starter and off the bench and the value of a player like Aaron who can play several positions and hit from both sides can not be understated."