EC2 Fundamentals
Setting up billing alert
If you would like your IAM user to also be able to set up billing alerts then you would have to enable that setting under Account as the root user.
EC2
Most popular AWS service. Elastic compute cloud, infrastructure as a service (renting out virtual servers as a service).
What can you do with EC2?
- You can have your own virtual machine, EC2 instances
- You can store data on the virtual drivers that's connected to EC2 instances, called Elastic block storage
- Distribute load across machines using Elastic load balancer
- Finally, scale the service using auto-scaling group (Create or terminate EC2 instances based on demand)
EC2 sizing & configuration options
- Operating system: Linux, Windows or Mac OS
- How much CPU you want
- How much RAM
- How much storage space:
- Network-attached (EBS and EFS)
- Hardware (EC2 instance store)
- Network card: How fast is the internet, control what is the public IP address
- Firewall rules: What traffic can go in and out
- Bootstrap script (run at first launch)/EC2 User Data
EC2 User Data
Bootstrapping means launching commands when a machine starts. You can use EC2 User Data to write some bash scripts that will be ran when the EC2 instance is booted.
Use it to automate boot task like installing updates, software, downloading common files from the internet, or anything you can think of.
It will run as the root user! So keep that in mind.
EC2 status
You can stop an instance to stop it from running. AWS will not be charging you if it is Stopped. If you stopped the instance all the resources that's allocated with that EC2 instance will not be deleted. EBS storage will be kept.
You can also terminate the instance and delete it from existence. Which will also delete the storage if you configured it so.
Everytime you stop and start up an EC2 instance it will be given another public ipv4 address! Private ipv4 will always be kept the same.
EC2 instance types
There are variety of EC2 types that are optimized for certain type of work/different use cases. AWS also has a naming convention for the EC2 instance that they have.
m5.2xlarge
m: Tells the instance class
5: Tells the generation of the instance class (It is improved over time)
2xlarge: Tells the size of the instance class (how much cpu, memory, networking capability they have)
General purpose: Great for diversity of workloads like web servers or code repositories.
They balance between compute power, memory, and networking. t2.micro is a General purpose EC2 instance.
Compute optimized: Optimized for compute-intensive tasks that require high performance processors.
Great for batch processing workloads, media transcoding, high performance web servers, high performance computing, dedicated gaming servers.
Memory optimized: Fast performance for workloads that process large data sets in memory
If you use it for high performance, relational/non-relational databases, distributed web scale cache stores, applications performing real-time processing of big unstructured data.
Storage optimized: Great for storage-intensive tasks that require high, sequential read and wrtie access to large data sets on local storage
Use it for high frequency online transaction processing systems, relational and NoSQL databases, cache for in-memory databases, distribute file systems
Security groups
They are firewall on EC2 instance. They let you control what kind of traffic is allowed in or out of EC2 instances.
One EC2 instance can have multiple security groups, they aren't limited to only one! The rules will just add on to each other.
They regulate access to ports, authorized IP range, control inbound network and outbound network.
For example: You can specify for TCP over port 443 to allow it or disallow it for said EC2 instances.
Security groups only contain allow rules, and you can reference by IP or other by security group (reference each other).
Additional information
You can attach a security group to multiple instances, and they are locked down to a region / VPC combination. Meaning if you switch to another region or set up another VPC, then you will have to reconfigure the security group as they are not carried over.
Good to maintain one separate security group for SSH access.
Referencing other security groups
You can set up security groups to reference other security groups, what does it mean? If you have an EC2 instance you can set up its security group such that it authorize Security Group 1 and Security Group 2. So if there are other EC2 instance with either Security Group 1 or Security Group 2 attached to it, their traffic to the current EC2 instance will not be restricted, they can communicate directly with the current EC2 without having to set an explicit IP address or inbound/outbound rule.
If you have another EC2 instance say with Security Group 3 attached to it, then it will not be able to send any traffic to the current EC2 instance since it is not an authorized security group.
Classic port to know
port 22 is for SSH, let you log into EC2 instance
port 21 is for FTP, upload files into a file share
port 22 is also for SFTP, upload file using SSH
port 80 for HTTP, access unsecured websites
port 443 for HTTPS, access secured websites
port 3389 for RDP (Remote desktop protocol), log into a Window instances