"By" would be the better choice.
With "by" you would be stating something like the following. Brackets indicate implied words.
I’d never seen so many people before. I was amazed by [the attendance of the people in] the crowds.
With "at" you would be stating something like the following. Brackets indicate implied words.
I’d never seen so many people before. I was amazed at [the attitude of the people in] the crowds.
If you were talking about a one-time event, you may want to consider using crowd instead of crowds. If you used crowds, you are suggesting you saw more than one group of people.