How to determine an EC2 instances index/position in an Auto-scaling group

amazon-web-servicesautoscaling

I'm working on some automation scripts to bootstrap my application and will be using an auto-scaling group in AWS to spin up/down EC2 instances for my application.

I need to be able to re-create a consistent name for the machine that follows a pattern: MYAPP001, MYAPP002, MYAPP003.

The Question

Is there a way to query meta-data during the user-data bootstrapping phase to determine that this machine that just came up is 002 in the group?

If I can determine this, then I can rename the machine to MYAPP002.

Scenario to Help Explain

Imagine a 3rd-party service that expects machines to be named MYAPP001, MYAPP002, MYAPP003. In this software, it's OK for a machine to go offline and come back online later with a different IP address. However, you cannot have two different machines talk to this software at the same time with the same host name.

Best Answer

The documentation says that it's possible: Example: AMI Launch Index Value.

$ TOKEN=$(curl -X PUT "http://169.254.169.254/latest/meta-data/api/token"-H "X-aws-ec2-metadata-token-ttl-seconds: 21600") \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-launch-index