DEV Community

Cover image for Day-02 Terraform AWS Provider
Amit Kushwaha
Amit Kushwaha

Posted on

Day-02 Terraform AWS Provider

Understanding The Terraform Providers

Infrastruture as Code(IaC) has changed the way developers and cloud engineers manage and deploy infrastruture. Among all IaC tools, Terraform stands out for its simplicity, flexibility, and multi-cloud capabilities. But behind evrything Terraform does, there is one core component that makes the magic happen: providers.

if you're new to Terraform, understading providers is the first major step toward writing reliable and scalable infrastructure code. This blog breaks down what providers are, how they work, why versioning matters, and how to get hands-on with them using AWS as an exmaple.


🚀What are Terraform Providers?

A Terraform provider is essentially a plugin that allows Terraform to interact with an external platform such as AWS, Azure, Google Cloud, Docker, Kubernetes, GitHub, and hundreds more. Terraform itself doesn’t know how to create an EC2 instance or how to spin up a Kubernetes cluster — the provider handles that.

You can think of the provider as a translator. When you write Terraform code (HCL), the provider converts it into real API calls that the cloud platform understands.

Exmaple:

resource "aws_vpc "example" {
cidr_block = "10.0.0.0/16"
}
Enter fullscreen mode Exit fullscreen mode

Terraform alone cannot create a VPC. But with the AWS provider, it knows exactly what API to call and how to create it.


Key Building Blocks: terraform and provider Blocks

To start using a provider, you define two important blocks in your Terraform configuration:

  1. The terraform block

This declares the required Terraform CLI version and the providers your project depends on.

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 6.0"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode
  1. The provider block

This configures the provider itself.

# Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
}
Enter fullscreen mode Exit fullscreen mode

This tells Terraform:

  • Which provider to use
  • How to configure it (e.g., region)

Versioning
Versioning ensures stability. Providers are updated frequently, and new releases may contain breaking changes. Using version constraints protects your infrastructure from unexpected issues.

Common version operators:

  • = → exact version
  • < / > → less/greater than
  • <= / >= → allow ranges
  • != → exclude a version
  • ~> → “pessimistic constraint,” meaning allow only patch-level updates

example:
~> 6.7.0 → allows 6.7.x
~> 1.1 → allows 1.1.x
Locking versions ensures your environment does not break after an untested update.


Creating First Resource
Once the provider is set up, you can create resources. Here's a simple AWS VPC resources.

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
}
Enter fullscreen mode Exit fullscreen mode

Two things to understand:
aws_vpc is the resource type.
"main" is the local name you’ll use when referencing it.


Essential Terraform Commands You’ll Use

When working with providers, these commands become your daily routine:

  1. Initialize the working directory
terraform init
Enter fullscreen mode Exit fullscreen mode


This downloads the provider plugin and prepares Terraform to run.

  1. Configure AWS credentials

Before Terraform can talk to AWS, you have to authenticate:

aws configure
Enter fullscreen mode Exit fullscreen mode


You’ll enter:

  • Access key
  • Secret key
  • Default region
  1. Preview changes
terraform plan
Enter fullscreen mode Exit fullscreen mode


This compares your config with actual cloud resources and shows:

  • What will be created
  • What will change
  • What will be destroyed

It even tells you which values are “known after apply,” meaning Terraform will get them only after creating the resource.

Terraform State

Terraform maintains a state file, which acts like Terraform’s memory.
It keeps track of all resources created so Terraform knows what exists and what needs to be updated or removed.

This video by Piyush Sachdeva explains the core concepts of Terraform providers in a very beginner-friendly way. He breaks down what providers are, how they interact with cloud platforms like AWS, how versioning works, and how to write a minimal Terraform configuration from scratch. If you're just starting with Terraform, this video gives you the perfect foundation to understand the provider workflow clearly.

🔗 Connect With Me

If you enjoyed this post or want to follow my #30DaysOfAWSTerraformChallenge journey, feel free to connect with me here:

💼 LinkedIn: Amit Kushwaha

🐙 GitHub: Amit Kushwaha

📝 Hashnode / Amit Kushwaha

🐦 Twitter/X: Amit Kushwaha

Top comments (0)