This project demonstrates the automated creation of cloud infrastructure on AWS using Terraform and GitHub Actions (CI).
It is part of a practical portfolio focused on Data Engineering, emphasizing Infrastructure as Code (IaC) best practices and provisioning automation.
Automatically provision the following AWS resources:
- S3 Bucket to store raw and processed data.
- AWS Glue Catalog Database for future data analysis via Athena.
- CI/CD Pipeline using GitHub Actions to validate and format Terraform code on every push or pull request.
| Category | Technologies |
|---|---|
| IaC | Terraform |
| CI/CD | GitHub Actions |
| Cloud | AWS S3, AWS Glue Catalog |
| Environment | Ubuntu via WSL2 |
| Version Control | Git + GitHub |
projeto4_terraform_infra/
├── main.tf # Main Terraform configuration
├── variables.tf # Variable definitions
├── outputs.tf # Terraform outputs
├── .github/
│ └── workflows/
│ └── terraform.yml # CI pipeline for validation
└── HISTORICO.md # Commit history of the project- Creates an S3 bucket with a unique name and configurable policies.
- Creates a Glue database with name and description defined via variables.
- Fully parameterized for reusability and portability.
The terraform.yml workflow runs automatically on each push or pull request:
terraform init # Initialize Terraform environment
terraform validate # Validate configuration syntax
terraform fmt -check # Check formatting
terraform plan # Generate execution plan
terraform apply # (Optional) Apply changes on main branchRequirements:
- AWS CLI configured
- Terraform installed
Steps:
# Navigate to the project folder
cd terraform
# Initialize Terraform
terraform init
# Validate and preview changes
terraform validate
terraform plan
# Apply infrastructure
terraform apply- This project does not use Terraform Cloud or store sensitive secrets.
- All executions run through GitHub Actions and local Terraform, ensuring security and portability.