Des Moines (DSM) is the default airport (it's about 40 minutes from Ames by car). It is served by all major carriers (American, Delta, United, Allegiant, Frontier, & Southwest) and all major rental car providers (Alamo, American, Avis, Budget, Enterprise, Hertz, National).
If you don't want to rent a car, there is a shuttle service from the Des Moines airport to/from Ames (reservations need at least 24 hours notice). The shuttle service is Executive Express. Book online or via phone.
It will likely be cheaper to fly to Minneapolis (MSP) but the drive from there to Ames is about 3 hours (and no shuttle is available).
Ames is located at the intersection of I-35 and US Highway 30. I-35 runs north-south from Laredo, Texas to Duluth, Minnesota and is intersected by numerous east-west interstate highways including I-29/I-70 in Kansas City, MO, I-80 in West Des Moines, IA, and I-90 in Albert Lea, MN.
Amtrak's California Zephyr and Southwest Chief both service Oceola, Iowa which is 85 miles south (1 hour & 16 minutes) of Ames. Car rental in Oceola is possible but potentially problematic. Therefore, traveling to Ames by train is not recommended.