Bird
Raised Fist0
Terraformcloud~10 mins

Import block syntax (Terraform 1.5+) - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import an AWS S3 bucket resource using the new import block syntax.

Terraform
resource "aws_s3_bucket" "example" {
  bucket = "my-bucket"

  import {
    id = [1]
  }
}
Drag options to blanks, or click blank then click option'
A"bucket-001"
B"my-bucket-123"
C"my-bucket"
D"example-bucket"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different bucket name than the resource's bucket attribute.
Omitting quotes around the bucket name.
2fill in blank
medium

Complete the import block to import an AWS EC2 instance with ID i-1234567890abcdef0.

Terraform
resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  import {
    id = [1]
  }
}
Drag options to blanks, or click blank then click option'
A"instance-01"
B"web-instance"
C"ami-0c55b159cbfafe1f0"
D"i-1234567890abcdef0"
Attempts:
3 left
💡 Hint
Common Mistakes
Using the AMI ID instead of the instance ID.
Using the resource name instead of the instance ID.
3fill in blank
hard

Fix the error in the import block by completing the id field correctly for a Google Cloud Storage bucket named 'my-gcs-bucket'.

Terraform
resource "google_storage_bucket" "bucket" {
  name = "my-gcs-bucket"

  import {
    id = [1]
  }
}
Drag options to blanks, or click blank then click option'
A"projects/_/buckets/my-gcs-bucket"
B"my-gcs-bucket"
C"gcs-bucket-001"
D"bucket-my-gcs"
Attempts:
3 left
💡 Hint
Common Mistakes
Using only the bucket name as the id.
Using an incorrect resource path format.
4fill in blank
hard

Complete the import block to import an Azure resource group named 'my-resource-group' with the correct id.

Terraform
resource "azurerm_resource_group" "rg" {
  name     = "my-resource-group"
  location = "East US"

  import {
    id   = [1]
  }
}
Drag options to blanks, or click blank then click option'
A"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group"
B"my-resource-group"
C"azurerm_resource_group"
D"resource_group"
Attempts:
3 left
💡 Hint
Common Mistakes
Using only the resource group name as id.
5fill in blank
hard

Fill both blanks to import a Kubernetes namespace named 'dev-namespace' with the correct id and provider alias 'k8s'.

Terraform
provider "kubernetes" {
  alias = "k8s"
  config_path = "~/.kube/config"
}

resource "kubernetes_namespace" "dev" {
  metadata {
    name = "dev-namespace"
  }

  import {
    id       = [1]
    provider = [2]
  }
}
Drag options to blanks, or click blank then click option'
A"dev-namespace"
B"kubernetes_namespace"
Ckubernetes.k8s
D"namespace-dev"
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect provider reference syntax.
Using wrong id strings.

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