AWS EC2 Basics
What is EC2?
Section titled “What is EC2?”Amazon Elastic Compute Cloud (EC2) is the building block of AWS compute offering, it provides scalable computing capacity in the cloud, allowing users to run virtual servers on-demand. It removes the need for upfront hardware investment. With EC2, we can:
- Launch virtual servers, known as instances, in minutes.
- Scale compute capacity up or down based on your needs.
- Choose from a variety of instance types optimized for different workloads.
Key Concepts
Section titled “Key Concepts”To understand and use EC2, familiarize yourself with the following key concepts:
- Instances: Virtual servers running your applications.
- AMIs (Amazon Machine Images): Pre-configured templates for your instances.
- Instance Types: Define the compute, memory, and storage capacity of your instances.
- Security Groups: Virtual firewalls controlling inbound and outbound traffic.
- Elastic IPs: Static IP addresses for dynamic cloud computing.
- Key Pairs: Secure login to your instances using SSH.
Networking in EC2
Section titled “Networking in EC2”Networking capabilities include creating isolated networks using Virtual Private Clouds (VPCs), securing access with Security Groups, and assigning Elastic IPs for consistent public IPs. These features ensure flexibility and security for your cloud environment.
Storage Options
Section titled “Storage Options”EC2 supports multiple storage solutions:
- EBS (Elastic Block Store): Persistent block storage that can be attached to instances.
- Instance Store: Temporary, high-performance storage tied to the lifecycle of an instance.
- EFS (Elastic File System): Scalable, shared file storage accessible by multiple instances.
Working with EC2
Section titled “Working with EC2”Step 1: Install and Configure AWS CLI
Section titled “Step 1: Install and Configure AWS CLI”Before proceeding, ensure you have AWS CLI installed and configured on your local machine.
- Download and install the (Install AWS CLI).
- Configure the CLI with your credentials:
aws configureEnter your access key, secret key, default region, and preferred output format (e.g., JSON).
Step 2: Create a Key Pair
Section titled “Step 2: Create a Key Pair”Generate a key pair for secure SSH access:
aws ec2 create-key-pair --key-name nginx-server-key --query 'nginx-server-key' --output text > nginx-server-key.pem
chmod 400 nginx-server-key.pemStep 3: Launch an EC2 Instance
Section titled “Step 3: Launch an EC2 Instance”Run the following command to create an EC2 instance:
aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --key-name nginx-server-key \ --security-group-ids sg-0abc12345def67890 \ --subnet-id subnet-0abcd1234 \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=nginx-server}]'Replace the placeholders with appropriate values for your setup. Use aws ec2 describe-images to find suitable AMIs.
Step 2: Describe Instances and Get AMI ID
Section titled “Step 2: Describe Instances and Get AMI ID”-
List available AMIs in your region:
Terminal window aws ec2 describe-images --owners amazon --filters "Name=architecture,Values=x86_64" "Name=virtualization-type,Values=hvm" --query 'Images[*].[ImageId,Description]' --output tableSelect an appropriate AMI ID from the output.
-
Confirm your existing EC2 instances (if any):
Terminal window aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress]' --output table
Step 3: Setup Network Components
Section titled “Step 3: Setup Network Components”- Create a security group:
aws ec2 create-security-group --group-name NginxSecGroup --description "Nginx Server Sec group"Note the Security Group ID from the output.
- Add a rule to allow SSH and HTTP access:
aws ec2 authorize-security-group-ingress --group-id <SecurityGroupId> --protocol tcp --port 22 --cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress --group-id <SecurityGroupId> --protocol tcp --port 80 --cidr 0.0.0.0/0- Create a subnet (if needed) and note its ID:
aws ec2 describe-subnets --query 'Subnets[*].[SubnetId,AvailabilityZone]' --output tableStep 4: Create a Key Pair
Section titled “Step 4: Create a Key Pair”Generate a key pair for secure SSH access:
aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pemchmod 400 MyKeyPair.pemStep 5: Launch an EC2 Instance
Section titled “Step 5: Launch an EC2 Instance”Run the following command to create an EC2 instance:
aws ec2 run-instances \ --image-id <AMI_ID> \ --instance-type t2.micro \ --key-name MyKeyPair \ --security-group-ids <SecurityGroupId> \ --subnet-id <SubnetId> \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyInstance}]'Replace the placeholders with appropriate values for your setup.
Step 6: Connect to Your Instance
Section titled “Step 6: Connect to Your Instance”Retrieve the public IP address of your instance:
aws ec2 describe-instances --instance-ids <InstanceId> --query 'Reservations[0].Instances[0].PublicIpAddress' --output textConnect using SSH:
ssh -i MyKeyPair.pem ec2-user@<PublicIP>Step 7: Install Nginx
Section titled “Step 7: Install Nginx”-
Update the package manager:
Terminal window sudo yum update -y -
Install Nginx:
Terminal window sudo amazon-linux-extras install nginx1 -ysudo systemctl start nginxsudo systemctl enable nginx -
Verify Nginx is running by visiting
http://<PublicIP>in your browser.
Step 8: Terminate Your Instance
Section titled “Step 8: Terminate Your Instance”To avoid incurring charges, terminate your instance when done:
aws ec2 terminate-instances --instance-ids <InstanceId>Conclusion
Section titled “Conclusion”In this tutorial, we covered the essentials of AWS EC2, including key concepts, creating an instance via the AWS CLI, and deploying a basic web server using Nginx. This foundational knowledge equips you to explore different use cases for various workloads.