---
# System prepended metadata

title: AWS Primer for Terraform

---


[toc]

### AWS Concepts

#### AWS Services can have:
:::success
- Soft limits --> 5 VPC per account per region
- Hard limits --> 5TB Max file/object size (in S3)
:::

#### You can work with AWS via:
:::success
- AWS Console (GUI)(console.aws.amazon.com) 
- AWS CLI (Command line) - 
- SDK (Programmatic access) 
:::

#### AWS Terminology
:::success
- EC2     --> Virtual Machines on AWS
- AMI     --> Pre-configured OS template
- Keypair --> asymmetric key-pair for passwordless authentication
- VPC     --> Logical network boundry where you have full control
- Subnets --> logical splitting of VPC into multipe smaller sub-networks
- Security Groups (SG) --> Firewalls in AWS
- Instance type --> to Define resources (vCPU / memory / network bandwidth)
- User data --> to pass initialization scripts
:::

#### EC2 nomenclature
:::success
**m5.xlarge**

m      --> instance family
5      --> generation
xlarge --> size (vCPU/memory/network bandwidth)
:::

### Classroom activity 1 - Create an EC2 instance with default properties

#### Step 1: Create an instance with the following details:
:::warning
Software Image (AMI) --> Amazon Linux 2023 (ami-0f34c5ae932e6f0e4)
Instance type --> t2.micro
Keypair --> Create a new one by clicking "create a new keypair"
Security group --> select existing security group --> default
:::
:arrow_right: *Keep the rest of the values as default and create the instance*

#### Step 2: Connect to the instance
:::warning
- Go to EC2 dashboard
- List the EC2 instances
- Select the instance from the list
- Click on connect
- Click on connect
- Your terminal window should open in a new browser tab
:::

#### Step 3: Terminate the instance
:::warning
- Go to EC2 dashboard
- List the EC2 instances
- Select the instance
- Go to "instance state"
- Select "Terminate Instance"
:::

### Classroom Activity 2 - Create an EC2 instance with User data

#### Step 1: Create an EC2 instance via AWS Console with the following properties:
:::warning
Name            = terraform-demo
AMI             = Amazon Linux 2023 ## choose the right AMI as per your AWS region
Instance type   = t2.micro
Security Group  = create a new security group with the following incoming ports allowed:
80
443
22

User data        = Put the following script
````yaml
#!/bin/bash
yum update -y
yum install -y httpd.x86_64
systemctl start httpd.service
systemctl enable httpd.service
echo “Welcome to Simplilearn CMAT from $(hostname -f)” > /var/www/html/index.html
````
:mag: *Everything else should be left to their default values.*
:::

#### Step 2: Validation
:::warning
Access the webpage on a browser successfully
:::

#### Step 3: Connect to the instance
:::warning
- Go to EC2 dashboard
- List the EC2 instances
- Select the instance from the list
- Click on connect
- Click on connect
- Your terminal window should open in a new browser tab
:::

#### Step 4: Terminate the instance
:::warning
- Go to EC2 dashboard
- List the EC2 instances
- Select the instance
- Go to "instance state"
- Select "Terminate Instance"
:::

### How to get *access_key* and *secret_access_key* in your own AWS accounts

**Login into AWS Console**
**Navigate to IAM Dashboard --> Users --> select the user --> select "security credentials"**

![](https://hackmd.io/_uploads/Bkp_yZtIn.png)

**Scroll down to "Access Keys" and click on "Create access key"**

![](https://hackmd.io/_uploads/SJ8sy-FUh.png)


**Select the first option to create access key for CLI access, agree to terms and conditions and click "Next"**

![](https://hackmd.io/_uploads/SyJGxZF83.png)

**Provide an appropriate description tag for your credentials**

![](https://hackmd.io/_uploads/rJ1DxZF8n.png)

**Copy/download access key and secret access key**

![](https://hackmd.io/_uploads/BkRCyZtUn.png)

:arrow_right: *Make sure to copy/download the secret access key from the summary page. Once you exit the page this information cannot be retrieved again.*



### References
:::success
**Documentation**
- https://cdkworkshop.com/
- https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html
- https://aws.amazon.com/developer/tools/
- https://aws.amazon.com/ec2/instance-types/

**Workshops**
- https://ec2spotworkshops.com/ (Fundamental)
- https://wellarchitectedlabs.com/ (Advanced)
- 
:::
