Bird
Raised Fist0
AWScloud~10 mins

Instance metadata and user data in AWS - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Process Flow - Instance metadata and user data
Instance Launch
Access Metadata URL
Retrieve Metadata Info
Access User Data URL
Retrieve User Data Script
Execute User Data Script
Instance Configured
When an instance starts, it can get info about itself from metadata and run setup commands from user data.
Execution Sample
AWS
curl http://169.254.169.254/latest/meta-data/instance-id
curl http://169.254.169.254/latest/user-data
These commands get the instance ID and the user data script from the instance metadata service.
Process Table
StepActionURL AccessedResponseEffect
1Instance starts--Instance boots up
2Request instance IDhttp://169.254.169.254/latest/meta-data/instance-idi-1234567890abcdef0Instance learns its ID
3Request user datahttp://169.254.169.254/latest/user-data#!/bin/bash echo Hello > /var/tmp/greeting.txtInstance gets setup script
4Execute user data script-Script runsFile /var/tmp/greeting.txt created with 'Hello'
5Instance ready--Configured and running
6Exit--No more metadata or user data requests
💡 User data script executed and instance fully configured
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
instance_idundefinedi-1234567890abcdef0i-1234567890abcdef0i-1234567890abcdef0i-1234567890abcdef0
user_data_scriptundefinedundefined#!/bin/bash echo Hello > /var/tmp/greeting.txt#!/bin/bash echo Hello > /var/tmp/greeting.txt#!/bin/bash echo Hello > /var/tmp/greeting.txt
greeting_filedoes not existdoes not existdoes not existexists with content 'Hello'exists with content 'Hello'
Key Moments - 3 Insights
Why do we use the special IP 169.254.169.254 to get metadata?
This IP is a fixed link-local address that all instances can use to get their own metadata without needing internet access, as shown in step 2 of the execution table.
What happens if the user data script is empty or missing?
The instance will not run any setup commands from user data, so no changes happen after step 3; the instance just boots normally.
Can the instance metadata change after launch?
No, metadata like instance ID is fixed at launch and does not change during the instance lifetime, as tracked in the variable 'instance_id'.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the instance ID returned at step 2?
Ainstance-001
Bi-abcdef1234567890
Ci-1234567890abcdef0
DNo ID returned
💡 Hint
Check the 'Response' column in row for step 2 in the execution table.
At which step does the instance execute the user data script?
AStep 4
BStep 2
CStep 3
DStep 5
💡 Hint
Look for the 'Execute user data script' action in the execution table.
If the user data script was missing, what would happen to the 'greeting_file' variable?
AIt would be created with 'Hello'
BIt would not exist
CIt would contain an error message
DIt would be empty but exist
💡 Hint
Refer to the variable_tracker row for 'greeting_file' and the key moment about missing user data.
Concept Snapshot
Instance metadata is info the instance can get about itself via a special IP.
User data is a script the instance runs at launch to configure itself.
Access metadata at http://169.254.169.254/latest/meta-data/
Access user data at http://169.254.169.254/latest/user-data
User data runs only once at boot.
Metadata is read-only and fixed per instance.
Full Transcript
When an AWS instance starts, it can get information about itself called metadata by accessing a special IP address 169.254.169.254. This metadata includes things like the instance ID. The instance can also get user data, which is a script provided at launch time. The instance runs this script once to set itself up. For example, the instance can get its ID by requesting the metadata URL and get a setup script by requesting the user data URL. Then it runs the script to create files or install software. Metadata is fixed and does not change after launch. User data is optional and runs only once. This process helps automate instance configuration without manual steps.

Practice

(1/5)
1. What is the primary purpose of instance metadata in AWS EC2?
easy
A. To provide information about the instance to itself
B. To store user files permanently
C. To allow external users to access the instance
D. To manage billing information for the instance

Solution

  1. Step 1: Understand instance metadata role

    Instance metadata is data about the instance that the instance can access itself, such as its ID, IP address, or region.
  2. Step 2: Differentiate from other options

    It is not for storing user files, external access, or billing management.
  3. Final Answer:

    To provide information about the instance to itself -> Option A
  4. Quick Check:

    Instance metadata = instance self-info [OK]
Hint: Instance metadata is info the server knows about itself [OK]
Common Mistakes:
  • Confusing metadata with user data
  • Thinking metadata is for external access
  • Assuming metadata stores user files
2. Which IP address is used inside an EC2 instance to access instance metadata?
easy
A. 127.0.0.1
B. 169.254.169.254
C. 192.168.0.1
D. 10.0.0.1

Solution

  1. Step 1: Recall the special metadata IP

    A fixed IP address 169.254.169.254 is reserved for instance metadata access inside EC2 instances.
  2. Step 2: Exclude other common IPs

    127.0.0.1 is localhost, 192.168.0.1 and 10.0.0.1 are private network IPs but not for metadata.
  3. Final Answer:

    169.254.169.254 -> Option B
  4. Quick Check:

    Metadata IP = 169.254.169.254 [OK]
Hint: Metadata IP always starts with 169.254 [OK]
Common Mistakes:
  • Using localhost IP 127.0.0.1
  • Confusing with private network IPs
  • Trying public IP addresses
3. Given this user data script for an EC2 instance:
#!/bin/bash
echo "Hello World" > /home/ec2-user/hello.txt

What will happen when the instance starts?
medium
A. The file will be created but empty
B. The instance will fail to start due to syntax error
C. Nothing happens because user data is ignored
D. The file /home/ec2-user/hello.txt will contain 'Hello World'

Solution

  1. Step 1: Understand user data script execution

    User data scripts run once at instance start and can create files or run commands.
  2. Step 2: Analyze the script effect

    The script writes 'Hello World' into the file /home/ec2-user/hello.txt, so the file will contain that text.
  3. Final Answer:

    The file /home/ec2-user/hello.txt will contain 'Hello World' -> Option D
  4. Quick Check:

    User data script writes file content [OK]
Hint: User data runs at start and executes commands [OK]
Common Mistakes:
  • Thinking user data runs multiple times
  • Assuming syntax error in simple echo
  • Believing user data is disabled by default
4. You try to access instance metadata from your EC2 instance using curl http://169.254.169.254/latest/meta-data/ but get no response. What is the most likely cause?
medium
A. Instance metadata service is disabled or blocked
B. The IP address is incorrect
C. User data script is missing
D. The instance is stopped

Solution

  1. Step 1: Check IP correctness

    The IP 169.254.169.254 is correct for metadata service, so IP is not the issue.
  2. Step 2: Consider service availability

    If no response, the metadata service might be disabled or blocked by firewall or instance settings.
  3. Final Answer:

    Instance metadata service is disabled or blocked -> Option A
  4. Quick Check:

    No metadata response = service disabled/blocked [OK]
Hint: No metadata response usually means service disabled [OK]
Common Mistakes:
  • Assuming wrong IP address
  • Confusing user data with metadata
  • Not checking instance state
5. You want to automate installing software on an EC2 instance at launch using user data. Which of these is the best practice?
hard
A. Manually SSH into the instance after launch to install software
B. Store installation commands in instance metadata
C. Write a shell script in user data that installs software and runs on first boot
D. Use user data only to store instance tags

Solution

  1. Step 1: Understand user data purpose

    User data is designed to run scripts automatically at instance launch to configure or install software.
  2. Step 2: Evaluate options

    Manual SSH is not automated, metadata is read-only info, and tags are not stored in user data.
  3. Final Answer:

    Write a shell script in user data that installs software and runs on first boot -> Option C
  4. Quick Check:

    User data automates setup scripts [OK]
Hint: Use user data scripts to automate setup at launch [OK]
Common Mistakes:
  • Trying to store commands in metadata
  • Ignoring automation benefits
  • Misusing user data for tags