Bird
Raised Fist0
Terraformcloud~20 mins

Import block syntax (Terraform 1.5+) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Terraform Import Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding the purpose of the import block in Terraform 1.5+

What is the main purpose of the import block introduced in Terraform 1.5+?

ATo automatically create new resources in the cloud provider without any configuration.
BTo declare resources that Terraform should import into the state during <code>terraform apply</code> without manual CLI commands.
CTo remove resources from the Terraform state without deleting them from the cloud provider.
DTo define variables that are imported from external files during plan execution.
Attempts:
2 left
💡 Hint

Think about how Terraform manages existing resources that were created outside Terraform.

❓ Configuration
intermediate
2:00remaining
Identifying correct import block syntax

Which of the following Terraform snippets correctly uses the import block syntax introduced in Terraform 1.5+ to import an AWS S3 bucket with ID my-bucket?

A
import {
  to = aws_s3_bucket.example
  id = "my-bucket"
}
B
import {
  id = aws_s3_bucket.example
  to = "my-bucket"
}
C
import {
  resource = aws_s3_bucket.example
  id = "my-bucket"
}
D
import {
  id = "my-bucket"
  to = aws_s3_bucket.example
}
Attempts:
2 left
💡 Hint

The import block requires id and to attributes. The order matters for clarity.

❓ Architecture
advanced
2:00remaining
Behavior of import block during terraform apply

What happens when Terraform runs terraform apply with a configuration that includes an import block for a resource that already exists in the cloud provider but is not yet in the Terraform state?

ATerraform imports the resource into the state automatically before applying any changes.
BTerraform ignores the import block and creates a new resource instead.
CTerraform throws an error and stops the apply process.
DTerraform deletes the existing resource and creates a new one.
Attempts:
2 left
💡 Hint

Consider how Terraform handles existing resources declared in the import block during apply.

❓ security
advanced
2:00remaining
Security considerations when using import blocks

Which security risk is most relevant when using Terraform's import block to bring existing cloud resources into state?

AAccidentally importing sensitive resources without proper access controls in Terraform state files.
BTerraform automatically encrypts all imported resource data, so no risks exist.
CImport blocks expose cloud provider credentials in the Terraform configuration files.
DImport blocks delete existing resources during import, causing data loss.
Attempts:
2 left
💡 Hint

Think about what information is stored in Terraform state files after import.

❓ service_behavior
expert
2:00remaining
Effect of multiple import blocks for the same resource

Given a Terraform configuration with two import blocks referencing the same resource address but different IDs, what will happen during terraform apply?

ATerraform will ignore the second import block and only import the first resource ID.
BTerraform will import the resource twice, causing duplicate state entries.
CTerraform will raise an error about conflicting import declarations and stop the apply.
DTerraform will merge both IDs and create a new resource combining them.
Attempts:
2 left
💡 Hint

Consider how Terraform handles conflicting state imports for the same resource address.

Practice

(1/5)
1. What is the main purpose of the import block in Terraform 1.5+?
easy
A. To create new resources automatically
B. To delete resources from the cloud provider
C. To let Terraform track existing resources without recreating them
D. To backup Terraform state files

Solution

  1. Step 1: Understand the import block purpose

    The import block is designed to connect Terraform state with existing cloud resources.
  2. Step 2: Differentiate from other actions

    It does not create or delete resources but tracks them to avoid recreation.
  3. Final Answer:

    To let Terraform track existing resources without recreating them -> Option C
  4. Quick Check:

    Import block = track existing resources [OK]
Hint: Import block links Terraform to existing resources [OK]
Common Mistakes:
  • Thinking import creates new resources
  • Confusing import with resource deletion
  • Assuming import backs up state files
2. Which of the following is the correct syntax for an import block in Terraform 1.5+?
easy
A. import { target = aws_instance.example value = "i-1234567890abcdef0" }
B. import { to = aws_instance.example id = "i-1234567890abcdef0" }
C. import { resource = aws_instance.example key = "i-1234567890abcdef0" }
D. import { name = aws_instance.example identifier = "i-1234567890abcdef0" }

Solution

  1. Step 1: Recall import block keys

    The import block uses to for the Terraform resource and id for the cloud resource ID.
  2. Step 2: Match syntax with options

    Only import { to = aws_instance.example id = "i-1234567890abcdef0" } uses to and id correctly.
  3. Final Answer:

    import { to = aws_instance.example id = "i-1234567890abcdef0" } -> Option B
  4. Quick Check:

    Import keys = to and id [OK]
Hint: Remember keys: to = resource, id = cloud ID [OK]
Common Mistakes:
  • Using wrong keys like resource or target
  • Confusing id with identifier
  • Missing quotes around the id value
3. Given this import block:
import {
  to = aws_s3_bucket.mybucket
  id = "my-existing-bucket"
}
What will Terraform do after applying this import block?
medium
A. Track the existing S3 bucket 'my-existing-bucket' without creating it
B. Create a new S3 bucket named 'my-existing-bucket'
C. Delete the S3 bucket 'my-existing-bucket'
D. Throw a syntax error due to missing resource configuration

Solution

  1. Step 1: Understand import block effect

    The import block links Terraform state to an existing resource by its ID without creating or deleting it.
  2. Step 2: Confirm behavior after import

    Terraform will track the existing bucket named 'my-existing-bucket' safely.
  3. Final Answer:

    Track the existing S3 bucket 'my-existing-bucket' without creating it -> Option A
  4. Quick Check:

    Import block = track existing resource [OK]
Hint: Import links state to existing resource, no creation [OK]
Common Mistakes:
  • Assuming import creates new resources
  • Thinking import deletes resources
  • Confusing import with resource configuration
4. You wrote this import block:
import {
  to = aws_instance.web
  id = i-0abcd1234efgh5678
}
Terraform gives an error when applying. What is the likely cause?
medium
A. Terraform 1.5+ does not support import blocks
B. The to value should be the cloud resource ID
C. The import block must be inside a resource block
D. The id value is missing quotes

Solution

  1. Step 1: Check syntax for id value

    The id value must be a string, so it requires quotes around it.
  2. Step 2: Identify error cause

    Missing quotes around i-0abcd1234efgh5678 causes a syntax error.
  3. Final Answer:

    The id value is missing quotes -> Option D
  4. Quick Check:

    id value must be quoted string [OK]
Hint: Always quote id values in import blocks [OK]
Common Mistakes:
  • Not quoting string IDs
  • Confusing to and id values
  • Placing import block inside resource block
5. You want to import an existing Azure resource group with ID "/subscriptions/123/resourceGroups/mygroup" into Terraform resource azurerm_resource_group.main. Which import block is correct and follows best practices?
hard
A. import { to = azurerm_resource_group.main id = "/subscriptions/123/resourceGroups/mygroup" } resource "azurerm_resource_group" "main" { name = "mygroup" location = "eastus" }
B. import { to = azurerm_resource_group.main id = "mygroup" } resource "azurerm_resource_group" "main" { name = "mygroup" location = "eastus" }
C. import { to = azurerm_resource_group.main id = "/subscriptions/123/resourceGroups/mygroup" } resource "azurerm_resource_group" "main" { location = "eastus" }
D. import { to = azurerm_resource_group.main id = "mygroup" } resource "azurerm_resource_group" "main" { location = "eastus" }

Solution

  1. Step 1: Use full resource ID in import block

    The id must be the full Azure resource ID string to correctly identify the resource.
  2. Step 2: Provide matching resource configuration

    After import, the resource block must include all required attributes like name and location to manage the resource safely.
  3. Final Answer:

    Import block with full ID and resource block with name and location -> Option A
  4. Quick Check:

    Full ID + matching config = correct import [OK]
Hint: Use full resource ID and matching config after import [OK]
Common Mistakes:
  • Using partial ID instead of full resource ID
  • Omitting required resource attributes after import
  • Assuming import block replaces resource configuration
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard