To my understanding the AMI contains all the files of the system, including compiled kernel.
When you create an AMI from a snapshot you can specify the kernel ID (ex aki-*). Why then do you need to specify the kernel ID when launching an instance from an AMI that already has the Kernel ID specified?