Every start gives an instance a new public IP. Anything that remembered the old one, a bookmark or a DNS record, breaks. An Elastic IP is a public address your account keeps until you release it.
Allocate
ALLOC=$(aws ec2 allocate-address --domain vpc --query AllocationId --output text)allocate-address reserves an address for the account. --domain vpc is the kind every modern instance uses. The answer holds the address (PublicIp) and its allocation id (eipalloc-…), which commands use to name it; the query keeps the id in ALLOC.
Associate
aws ec2 associate-address --allocation-id $ALLOC --instance-id $IDThe instance's public IP is now the Elastic IP. Stop and start it, and the address stays.
What it costs
An Elastic IP costs about half a cent an hour for as long as the account holds it, whether it is attached to an instance or not. An address reserved and forgotten shows up on the bill, doing nothing, until you release it.