Bird
Raised Fist0
Terraformcloud~20 mins

Resource types and names in Terraform - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Resource Naming Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Identify the correct resource type in Terraform

Which of the following is the correct resource type for creating an AWS S3 bucket in Terraform?

Abucket_aws_s3
Baws_bucket_s3
Cs3_aws_bucket
Daws_s3_bucket
Attempts:
2 left
💡 Hint

Resource types in Terraform usually start with the provider name, followed by the resource name.

❓ Configuration
intermediate
1:30remaining
Determine the valid resource name in Terraform

Which of the following is a valid resource name in Terraform?

Amy resource
B1myresource
Cmy-resource_1
DmyResource!
Attempts:
2 left
💡 Hint

Resource names must start with a letter or underscore and can contain letters, digits, underscores, and dashes.

❓ Architecture
advanced
2:00remaining
Predict the resource count after applying Terraform configuration

Given the following Terraform configuration snippet, how many AWS EC2 instances will be created?

resource "aws_instance" "web" {
  count = 3
  ami           = "ami-12345678"
  instance_type = "t2.micro"
}

resource "aws_instance" "db" {
  count = 2
  ami           = "ami-87654321"
  instance_type = "t2.micro"
}
A5
B3
C1
D2
Attempts:
2 left
💡 Hint

Count defines how many instances of a resource are created.

❓ security
advanced
1:30remaining
Identify the security risk in resource naming

Which resource naming practice can lead to a security risk in Terraform configurations?

AUsing short, generic resource names
BUsing descriptive names that reveal sensitive environment details
CUsing only lowercase letters and numbers in names
DUsing underscores instead of dashes in resource names
Attempts:
2 left
💡 Hint

Think about what information might be exposed unintentionally.

❓ service_behavior
expert
2:30remaining
Analyze the effect of resource renaming in Terraform state

What happens if you rename a resource block's name in Terraform configuration without using state commands?

Original:
resource "aws_s3_bucket" "mybucket" {
  bucket = "example-bucket"
}

Renamed:
resource "aws_s3_bucket" "mybucket_renamed" {
  bucket = "example-bucket"
}
ATerraform will try to create a new bucket and delete the old one
BTerraform will update the existing bucket in place
CTerraform will ignore the change and do nothing
DTerraform will merge both resources into one
Attempts:
2 left
💡 Hint

Think about how Terraform tracks resources in its state file.

Practice

(1/5)
1. What does the resource block in Terraform define?
easy
A. A provider configuration
B. A variable to store user input
C. A cloud service to create and manage
D. A function to run code

Solution

  1. Step 1: Understand Terraform resource block purpose

    The resource block tells Terraform what cloud service to create and manage.
  2. Step 2: Differentiate from other blocks

    Variables store input, functions run code, and providers configure cloud access, but resources define actual services.
  3. Final Answer:

    A cloud service to create and manage -> Option C
  4. Quick Check:

    Resource block = cloud service definition [OK]
Hint: Resource blocks create services, not variables or functions [OK]
Common Mistakes:
  • Confusing resource with variable or provider blocks
  • Thinking resource defines code logic
  • Mixing resource with output blocks
2. Which of the following is the correct syntax to declare an AWS S3 bucket resource named my_bucket in Terraform?
easy
A. resource aws_s3_bucket "my_bucket" {}
B. resource aws_s3_bucket my_bucket {}
C. resource "aws_s3_bucket" my_bucket {}
D. resource "aws_s3_bucket" "my_bucket" {}

Solution

  1. Step 1: Recall Terraform resource syntax

    Terraform resource syntax requires resource type and name as strings inside quotes: resource "type" "name" {}
  2. Step 2: Match correct option

    Only resource "aws_s3_bucket" "my_bucket" {} uses quotes correctly around both type and name.
  3. Final Answer:

    resource "aws_s3_bucket" "my_bucket" {} -> Option D
  4. Quick Check:

    Resource type and name must be quoted [OK]
Hint: Always quote resource type and name in Terraform [OK]
Common Mistakes:
  • Omitting quotes around type or name
  • Using quotes inconsistently
  • Swapping order of type and name
3. Given this Terraform code snippet:
resource "aws_instance" "web" {
  ami           = "ami-123456"
  instance_type = "t2.micro"
}

What is the resource type and name?
medium
A. Type: aws_instance, Name: web
B. Type: web, Name: aws_instance
C. Type: ami-123456, Name: t2.micro
D. Type: aws_instance, Name: ami-123456

Solution

  1. Step 1: Identify resource type and name in block

    The first quoted string after resource is the type: "aws_instance". The second is the name: "web".
  2. Step 2: Confirm values are correct

    AMI and instance_type are attributes, not resource type or name.
  3. Final Answer:

    Type: aws_instance, Name: web -> Option A
  4. Quick Check:

    Resource type and name = aws_instance, web [OK]
Hint: First quoted string = type, second = name [OK]
Common Mistakes:
  • Confusing attributes with resource type or name
  • Swapping type and name
  • Using attribute values as names
4. What is wrong with this Terraform resource declaration?
resource "aws_s3_bucket" my_bucket {
  bucket = "my-bucket-name"
}
medium
A. Resource name is not quoted
B. Resource type is missing
C. Bucket attribute is invalid
D. Missing provider block

Solution

  1. Step 1: Check resource declaration syntax

    Terraform requires both resource type and name to be quoted strings.
  2. Step 2: Identify the error

    The resource name my_bucket is not quoted, causing a syntax error.
  3. Final Answer:

    Resource name is not quoted -> Option A
  4. Quick Check:

    Resource names must be quoted strings [OK]
Hint: Always quote resource names to avoid syntax errors [OK]
Common Mistakes:
  • Forgetting quotes around resource names
  • Assuming attributes cause errors
  • Thinking provider block is mandatory here
5. You want to create two AWS EC2 instances with different names but the same type in Terraform. Which is the best way to name the resources?
hard
A. resource "aws_instance" "aws_instance" {} and resource "aws_instance" "aws_instance" {}
B. resource "aws_instance" "app1" {} and resource "aws_instance" "app2" {}
C. resource "aws_instance" "1" {} and resource "aws_instance" "2" {}
D. resource "aws_instance" "instance" {} and resource "aws_instance" "instance" {}

Solution

  1. Step 1: Understand resource naming rules

    Resource names must be unique within the same type to avoid conflicts.
  2. Step 2: Evaluate naming options

    resource "aws_instance" "app1" {} and resource "aws_instance" "app2" {} uses unique, descriptive names app1 and app2. Choices that reuse the same name cause errors. The choice using numeric names is valid but less descriptive.
  3. Final Answer:

    resource "aws_instance" "app1" {} and resource "aws_instance" "app2" {} -> Option B
  4. Quick Check:

    Unique descriptive names prevent conflicts [OK]
Hint: Use unique, clear names for each resource [OK]
Common Mistakes:
  • Using duplicate resource names
  • Using unclear or numeric-only names
  • Ignoring naming uniqueness rules