Introduction and Concepts
Overview of the Documentation
This documentation provides a comprehensive guide to managing AWS infrastructure using Terraform modules. It covers the fundamental concepts, building a web application on AWS, and practical examples of Terraform modules.
Purpose and Scope
The purpose of this documentation is to help you understand how to leverage Terraform modules to automate the deployment and management of AWS infrastructure. It is designed for developers, DevOps engineers, and system administrators who are responsible for managing cloud resources.
Concept of Terraform Modules
What are Terraform modules?
Terraform modules are reusable, configurable components that encapsulate a set of related resources. They enable you to organize and reuse your code, making your infrastructure more modular and manageable.
Advantages of Using Terraform Modules
- Reusability: Modules can be reused across different projects, reducing the need to write repetitive code.
- Organization: They help in organizing your Terraform configuration by grouping related resources together.
- Easy Setup: Modules simplify the setup process by providing a predefined structure and default values.
Key AWS Services and Concepts
EC2 (Elastic Compute Cloud)
Amazon EC2 provides scalable computing capacity in the AWS cloud. Using EC2 eliminates the need to invest in hardware upfront, allowing you to develop and deploy applications faster.
ECS (Elastic Container Service)
Amazon ECS is a highly scalable, high-performance container orchestration service that supports Docker containers and allows you to easily run and scale containerized applications on AWS.
Load Balancer
An AWS Load Balancer distributes incoming application or network traffic across multiple targets, such as EC2 instances, containers, and IP addresses, in multiple Availability Zones.
RDS (Relational Database Service) - PostgreSQL
Amazon RDS for PostgreSQL makes it easy to set up, operate, and scale PostgreSQL deployments in the cloud. It provides cost-efficient, resizable capacity while managing time-consuming database administration tasks.
VPC (Virtual Private Cloud)
Amazon VPC lets you provision a logically isolated section of the AWS cloud where you can launch AWS resources in a virtual network that you define.
Public and Private Subnets
- Public Subnet: A subnet that has a route to an internet gateway, allowing its instances to have direct access to the internet.
- Private Subnet: A subnet that does not have a route to an internet gateway, keeping its instances isolated from direct internet access.
ACM (AWS Certificate Manager)
AWS Certificate Manager handles the complexity of creating and managing public SSL/TLS certificates for your AWS-based websites and applications.
CloudFront
Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency and high transfer speeds.
EFS (Elastic File System)
Amazon EFS provides simple, scalable, elastic file storage for use with AWS Cloud services and on-premises resources.
ECR (Elastic Container Registry)
Amazon ECR is a fully managed Docker container registry that makes it easy for developers to store, manage, and deploy Docker container images.
SES (Simple Email Service)
Amazon SES is a cloud-based email sending service designed to help digital marketers and application developers send marketing, notification, and transactional emails.
SSM (Systems Manager)
AWS Systems Manager provides a unified interface for you to view operational data from multiple AWS services and allows you to automate operational tasks across your AWS resources.
IAM (Identity and Access Management)
AWS IAM enables you to manage access to AWS services and resources securely. You can create and manage AWS users and groups and use permissions to allow and deny their access to AWS resources.