Bird
Raised Fist0
AWScloud~5 mins

Instance metadata and user data in AWS - Commands & Configuration

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
Introduction
When you launch a cloud server, you often need to know details about it or set it up automatically. Instance metadata lets the server learn about itself, like its name or network. User data lets you give instructions to the server to run when it starts, like installing software.
When you want the server to know its own IP address or hostname without manual input
When you want to automatically install software or set configurations when the server starts
When you need to pass secrets or keys securely to the server at launch time
When you want to automate setup tasks like creating users or starting services
When you want to debug or check server details without logging into it
Commands
This command fetches the unique ID of the running server from its metadata service. It helps identify the server without logging in.
Terminal
curl http://169.254.169.254/latest/meta-data/instance-id
Expected OutputExpected
i-0abcd1234efgh5678
This command retrieves the user data script or text that was provided when the server was launched. It shows what instructions the server received to run at startup.
Terminal
curl http://169.254.169.254/latest/user-data
Expected OutputExpected
#!/bin/bash yum update -y amazon-linux-extras install nginx1 -y systemctl start nginx
This command launches a new server with a specific image and type. It uses a user data script from the file 'setup.sh' to configure the server automatically and tags it with a name.
Terminal
aws ec2 run-instances --image-id ami-0abcdef1234567890 --count 1 --instance-type t2.micro --user-data file://setup.sh --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=example-instance}]'
Expected OutputExpected
{ "Instances": [ { "InstanceId": "i-0abcd1234efgh5678", "ImageId": "ami-0abcdef1234567890", "InstanceType": "t2.micro", "State": {"Name": "pending"} } ] }
--user-data - Specifies the script or commands to run when the instance starts
--tag-specifications - Adds tags like Name to help identify the instance
Key Concept

If you remember nothing else from this pattern, remember: instance metadata lets a server learn about itself, and user data lets you give it instructions to run when it starts.

Common Mistakes
Trying to access instance metadata from outside the server
The metadata service is only accessible from inside the server at a special IP address, so external requests fail
Run metadata queries from within the server's command line or scripts
Providing user data without the correct script header (like #!/bin/bash)
Without the proper header, the server may not run the user data as a script, so setup commands fail
Always start user data scripts with a proper shell header like #!/bin/bash
Not encoding or formatting user data correctly when launching instances
Incorrect formatting can cause the user data to be ignored or cause errors during instance startup
Use file:// syntax with properly formatted scripts or base64 encode user data if required
Summary
Use curl commands inside the server to get instance metadata like instance ID or IP address.
Provide user data scripts when launching instances to automate setup tasks.
Use AWS CLI run-instances command with --user-data flag to pass startup instructions.

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