6.7 EC2 Instance Metadata Service (IMDSv2): Fetching Role Credentials

Right, let’s talk about the magic box inside your EC2 instance that holds all its secrets: the Instance Metadata Service (IMDS). Think of it as a highly specific, internal-only concierge service that only your instance can call. It answers questions like, “Who am I?”, “What’s my purpose?”, and most critically, “What are my temporary AWS credentials so I can actually do things?” The original version, now called IMDSv1, was a bit too simple. You could just curl a URL and get what you wanted, no questions asked. This became a problem. If some malicious code somehow got onto your instance, or if your web application was tricked into making a Server-Side Request Forgery (SSRF) attack, it could just as easily fetch those powerful credentials. Not great.

6.6 User Data Scripts: Running Commands at First Boot

Alright, let’s talk about giving your new EC2 instance a to-do list for its first day on the job. Because nobody—not even a virtual machine—wants to show up to a new job with no instructions. That’s what User Data scripts are for. They’re your way of leaning into the server’s console as it boots for the very first time and saying, “Hey, before you do anything else, here’s what I need you to do.”

6.5 Hibernate: Resuming an Instance from Memory

Alright, let’s talk about hibernation. No, not for you after a long day of debugging—for your EC2 instances. This is the feature that lets you pull off the closest thing to magic in the cloud: you stop an instance, and when you start it back up, it’s exactly as you left it. Your in-memory state—all those unsaved documents, that massive dataset you just loaded into RAM, the 47 open SSH connections you were using to prove a point—is preserved. It’s not a reboot; it’s a pause button.

6.4 Stop vs Terminate: Preserving vs Destroying the Instance

Right, let’s talk about pulling the plug. You’ve got an EC2 instance humming along, and you need to shut it down. You’ve got two big red buttons: Stop and Terminate. One is a cryogenic freeze, the other is a thermonuclear option. Pressing the wrong one is the cloud equivalent of accidentally deleting your entire thesis the night before it’s due. We’re not going to let that happen. The core distinction is brutally simple: Stop preserves the hard drive (the EBS volumes). Terminate destroys it by default. Everything else—the CPU, the memory, the network card—is ephemeral and gets reclaimed by AWS in both cases. The root volume is the soul of your instance; everything else is just the temporary, disposable body.

6.3 Connecting via SSH, EC2 Instance Connect, and Session Manager

Alright, let’s get you into your machine. Because an instance just sitting there in the AWS console, looking pretty, is about as useful as a car without a steering wheel. You need to get inside and make it do things. We have three main ways to do this, each with its own flavor of “why.” The Old Guard: SSH and Key Pairs This is the classic, the standard, the thing that will never die. SSH is your direct, encrypted line to the shell of your Linux instance. It’s powerful, it’s ubiquitous, and it’s also the one where you’ll most likely shoot yourself in the foot first.

6.2 Instance States: Pending, Running, Stopping, Stopped, Terminated

Right, let’s talk about what your EC2 instance is actually doing when you’re not looking. It’s not just sitting there; it’s got a whole internal life, a state of being. Knowing these states is the difference between confidently running infrastructure and frantically refreshing the AWS console at 2 AM wondering where all your money went. Think of these states as the instance’s mood. It can be fired up and ready for action (running), taking a well-deserved nap (stopped), or… well, dead (terminated). You need to know these moods because they directly impact two things: your bill and your data.

6.1 Launching an Instance: AMI, Type, VPC, Security Group, Key Pair

Right, let’s get you an EC2 instance. This isn’t like ordering a pizza where you just click “pepperoni” and hope for the best. You’re about to assemble a virtual server from a list of components, each with serious consequences if you get it wrong. Don’t worry, I’m here to make sure you don’t accidentally launch a publicly-accessible, password-less financial database into the wild. I’ve seen it happen. It’s not pretty.

— joke —

...