Essential Elements of Amazon Web Services (AWS)
Tags: webdev, aws, microservices, beginers
Published: 2024-01-15 11:49:40

Amazon Web Services (AWS) is a comprehensive and widely used cloud computing platform, offering a vast array of services that cater to various computing needs. 

Here are some key components of AWS and their respective functionalities:

## 1. Compute Services:

#### Amazon EC2 (Elastic Compute Cloud):

Amazon Elastic Compute Cloud (Amazon EC2) is a web service provided by Amazon Web Services (AWS) that offers resizable compute capacity in the cloud. It allows users to run virtual servers, known as instances, on-demand. EC2 instances can be used for a wide range of applications, including hosting websites, running applications, and handling various workloads.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eg2m0k2ytx5mi513gu83.png)

#### AWS Lambda:

AWS Lambda is a server-less computing service provided by Amazon Web Services (AWS). It allows developers to run code without provisioning or managing servers, and it automatically scales based on the incoming request traffic. AWS Lambda is designed to enable event-driven computing, making it easy to build applications that respond to various events and triggers.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xawza2rgldarjxmq5ns9.png)


#### Amazon Elastic Beanstalk

Amazon Elastic Beanstalk (EB) is a fully managed platform-as-a-service (PaaS) offering from Amazon Web Services (AWS). It simplifies the process of deploying, managing, and scaling web applications and services in the cloud. Elastic Beanstalk abstracts the underlying infrastructure, allowing developers to focus on their application code without worrying about the operational details of managing servers, networking, or scaling.

## 2. Storage Services

#### Amazon S3 (Simple Storage Service)

Amazon Simple Storage Service (Amazon S3) is a scalable object storage service provided by Amazon Web Services (AWS). It is designed to store and retrieve any amount of data from anywhere on the web. Amazon S3 is widely used for a variety of use cases, including data backup and recovery, web and mobile applications, content distribution, archiving, and more.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0cm4y0gwu7jxfa02opg.png)


#### Amazon EBS (Elastic Block Store)

Amazon Elastic Block Store (Amazon EBS) is a scalable block storage service provided by Amazon Web Services (AWS) for use with Amazon EC2 instances. EBS volumes provide highly available and reliable block-level storage that can be attached to EC2 instances.

Suitable for use as the root file system for EC2 instances or for additional data volumes attached to instances. It is commonly used for databases, applications that require high-performance storage, and workloads that require persistent block storage.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jbyh4mstmfb2sj83hlqq.png)

#### Amazon Glacier

Amazon Glacier is a low-cost, secure, and durable storage service provided by Amazon Web Services (AWS). It is designed for long-term archival and backup of data that is infrequently accessed. Amazon Glacier complements other AWS storage services, such as Amazon S3 and Amazon EBS, by offering a more cost-effective solution for storing large amounts of data that doesn't require frequent access.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oetrgv6czyz9ugzvy3q6.png)

## 3. Database Services:

#### Amazon RDS (Relational Database Service)

Amazon Relational Database Service (Amazon RDS) is a fully managed relational database service provided by Amazon Web Services (AWS). It enables users to set up, operate, and scale relational databases in the cloud without the need to manage the underlying infrastructure. Amazon RDS supports various popular database engines, making it a versatile solution for a wide range of applications
Amazon RDS supports several relational database engines, including:

	-	MySQL
	-	PostgreSQL
	-	MariaDB
	-	Oracle
	-	Microsoft SQL Server
	-	Amazon Aurora (a MySQL and PostgreSQL-compatible database engine developed by AWS)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fh0g57oz18wtz51v4lgu.png)

#### Amazon DynamoDB

Amazon DynamoDB is a fully managed NoSQL database service provided by Amazon Web Services (AWS). It is designed to provide fast and predictable performance with seamless scalability. DynamoDB is suitable for a wide range of applications, from small-scale projects to large-scale, high-traffic websites and mobile applications.

#### Amazon Redshift

Amazon Redshift is a fully managed data warehouse service provided by Amazon Web Services (AWS). It is designed for high-performance analysis and querying of large datasets. Amazon Redshift allows organisations to store and analyse vast amounts of data using a massively parallel processing (MPP) architecture.

Amazon Redshift has the following capabilities:

- Data warehousing and Analytics
- Fast
- Fully managed
- Petabytes-scale
- Use existing business-intelligent tools 
- Set-up, operate and scale your data-warehouse
- Provision and monitor infrastructure capacity
- Automate ongoing administrative tasks
- Monitors node and drives for failure and recovery
- Snapshots as Backup
- Secure data-warehouse

## 4. Networking Services

#### Amazon VPC (Virtual Private Cloud): 

Amazon Virtual Private Cloud (Amazon VPC) is a service provided by Amazon Web Services (AWS) that allows users to create and manage a virtual network in the AWS cloud. Amazon VPC enables users to launch Amazon Elastic Compute Cloud (EC2) instances, Amazon Relational Database Service (RDS) instances, and other AWS resources within a defined virtual network.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqi04rn40gmrneju07j3.png)

#### Amazon Route 53

Amazon Route 53 is a scalable and highly available Domain Name System (DNS) web service provided by Amazon Web Services (AWS). It allows users to register and manage domain names, as well as route internet traffic to the appropriate AWS resources or external endpoints.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88su8z0cqetydun21gno.png)


#### Elastic Load Balancing

Amazon Elastic Load Balancing (Amazon ELB) is a service provided by Amazon Web Services (AWS) that automatically distributes incoming application traffic across multiple targets, such as Amazon EC2 instances, containers, and IP addresses, within one or more availability zones. ELB improves the availability and fault tolerance of applications by ensuring that traffic is evenly distributed and by automatically rerouting it away from unhealthy targets. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xc03ifw89ji33vvjqbao.png)

There are three types of Elastic Load Balancers:

**Application Load Balancer (ALB):**

ALB operates at the application layer (Layer 7) of the OSI model and is designed to route traffic to different targets based on content. It supports features such as host-based and path-based routing, SSL termination, and WebSocket support. ALB is commonly used for web applications and micro-services architectures.

**Network Load Balancer (NLB):**

NLB operates at the transport layer (Layer 4) and is designed to handle TCP, UDP, and TLS traffic. It provides ultra-low-latency performance and is suitable for high-throughput applications. NLB is often used for scenarios where extreme performance is required, such as gaming and media streaming.

**Classic Load Balancer (CLB):**

CLB is the original load balancer offered by AWS. It provides basic load balancing at both the application and transport layers. However, AWS recommends using ALB or NLB for new applications, as they offer more features and enhanced performance.


## 5. Security and Identity

#### AWS IAM (Identity and Access Management)

AWS Identity and Access Management (IAM) is a web service provided by Amazon Web Services (AWS) that enables users to securely control access to AWS services and resources. IAM allows organisations to manage users, groups, and permissions, providing a centralised and fine-grained way to control who can access specific AWS resources and what actions they can perform


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fdxuw6q9ette4y1xezt1.png)


#### AWS Key Management Service (KMS)

Amazon Key Management Service (KMS) is a fully managed service provided by Amazon Web Services (AWS) that makes it easy to create and control cryptographic keys used for encrypting your data. AWS KMS enables you to generate, store, and manage cryptographic keys that are used to encrypt and decrypt data, as well as control access to these keys. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/14fu0ggri1iv11we0dzd.png)


#### AWS WAF (Web Application Firewall)

Amazon Web Services (AWS) Web Application Firewall (WAF) is a web application firewall service that helps protect web applications from common web exploits and attacks. AWS WAF allows users to define customisable security rules to filter malicious web traffic and mitigate potential threats to web applications.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/olxf26d0owahrzhtghzm.png)

## 6. Management Tools

#### AWS CloudFormation

AWS CloudFormation is a service provided by Amazon Web Services (AWS) that allows you to define and provision infrastructure as code (IaC) in a declarative manner. It enables you to describe and provision AWS resources using a template, which is a JSON or YAML formatted text file. With CloudFormation, you can create, update, and delete resources in a reliable and repeatable way, helping you manage your infrastructure efficiently.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xm4bdvd04tjnjn6nsxbe.png)

_Sample Template(YAML)_

```
AWSTemplateFormatVersion: "2010-09-09"

Mappings:
  RegionMap:
    us-east-1:
      AMI: "ami-0ff8a91507f77f867"
    us-west-1:
      AMI: "ami-0bdb828fd58c52235"
    us-west-2:
      AMI: "ami-a0cfeed8"
    eu-west-1:
      AMI: "ami-047bb4163c506cd98"
    sa-east-1:
      AMI: "ami-07b14488da8ea02a0"
    ap-southeast-1:
      AMI: "ami-08569b978cc4dfa10"
    ap-southeast-2:
      AMI: "ami-09b42976632b27e9b"
    ap-northeast-1:
      AMI: "ami-06cd52961ce9f0d85"

Parameters:
  EnvType:
    Description: Environment type.
    Default: test
    Type: String
    AllowedValues: [prod, dev, test]
    ConstraintDescription: must specify prod, dev, or test.
  
Conditions:
  CreateProdResources: !Equals [!Ref EnvType, prod]
  CreateDevResources: !Equals [!Ref EnvType, "dev"]

Resources:
  EC2Instance:
    Type: "AWS::EC2::Instance"
    Properties:
      ImageId: !FindInMap [RegionMap, !Ref "AWS::Region", AMI]
      InstanceType: !If [CreateProdResources, c1.xlarge, !If [CreateDevResources, m1.large, m1.small]]    
  MountPoint:
    Type: "AWS::EC2::VolumeAttachment"
    Condition: CreateProdResources
    Properties:
      InstanceId: !Ref EC2Instance
      VolumeId: !Ref NewVolume
      Device: /dev/sdh
  NewVolume:
    Type: "AWS::EC2::Volume"
    Condition: CreateProdResources
    Properties:
      Size: 100
      AvailabilityZone: !GetAtt EC2Instance.AvailabilityZone

```

#### Amazon CloudWatch 

Amazon CloudWatch is a monitoring and observability service provided by Amazon Web Services (AWS) that enables users to collect and track metrics, collect and monitor log files, and set alarms. CloudWatch allows you to gain insights into the performance, availability, and health of your applications, resources, and services running on the AWS platform.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ucs82actdkgiradpngpd.png)

#### AWS Config

AWS Config is a service provided by Amazon Web Services (AWS) that enables users to assess, audit, and evaluate the configurations of their AWS resources. AWS Config continuously monitors and records changes to resource configurations, allowing users to understand the relationships between resources, track changes over time, and gain visibility into the configuration history. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/io3mpmx4mft9lwpghm1n.png)


## 7. Developer Tools:

#### AWS CodeDeploy

AWS CodeDeploy is a fully managed deployment service provided by Amazon Web Services (AWS) that automates software deployments to a variety of compute services, including Amazon EC2 instances, AWS Lambda functions, and on-premises servers. CodeDeploy makes it easier to release new features, updates, and patches in a rapid and reliable manner, reducing downtime and minimising the impact on end-users during deployments


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4doa7t3xs8o2ss6brns6.png)


#### AWS CodeCommit

AWS CodeCommit is a fully managed source control service provided by Amazon Web Services (AWS). It offers a secure, scalable, and highly available platform for hosting private Git repositories. CodeCommit is designed to help teams collaborate on software development projects by providing version control capabilities


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nflm29ux05ihw8vfhkvd.png)

#### AWS CodePipeline

AWS CodePipeline is a fully managed continuous integration and continuous delivery (CI/CD) service provided by Amazon Web Services (AWS). It automates the process of building, testing, and deploying code changes, enabling teams to deliver software updates more quickly and reliably. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j9sl78ts0fsv5q39p7ke.png)


These are just a few examples of the extensive range of services that AWS offers. The platform continues to evolve with new services and features being added regularly. Users can leverage these services to build, deploy, and scale applications more efficiently and cost-effectively in the cloud.