A Load Balancer contains rules that mention Target Groups.
A Target Group contains EC2 instances that can be populated by hand or automatically by an Auto Scaling group.
A Launch Configuration contains an AMI.
An Auto Scaling Group contains a Launch Configuration and some Target Groups.
After making app source code changes and creating a new AMI for it, I will create a Launch Configuration for it.
I will edit the Auto Scaling Group, so it uses the new Launch Configuration. I will delete the old Launch Configuration and also the old AMI.
After seeing Target Groups are populated with the new version of EC2 instances, I will deregister the old EC2 instances from the Target Groups, and delete that old EC2 instances.