Task Review Request – Implementing Encryption at Rest with AWS KMS Using Terraform Marked Incorrect

Dear team,
I recently completed the “Implementing Encryption at Rest with AWS KMS Using Terraform” task, but it was marked as failed due to the output “KKE Kms key Missing or incorrect”. I cross checked and tried multiple times with different output values like aws_kms_key.nautilus_kms_key.key_id or aws_kms_key.nautilus_kms_key.name. I belive everything was executed correctly. The KMS was created, Attached Screenshot for reference. Kindly review and let me know if there’s anything I may have missed.

Regards
Tamizh

Hi @tamilzhnationalist

Please share the course name and level.

Course name: kodekloud engineer practice
Level: Terraform level3
Task name: Implementing Encryption at Rest with AWS KMS Using Terraform

1 Like

Hi @tamilzhnationalist

It’s working fine on my end. Please refer to the Terraform files below and try again.

main.tf

# 1️⃣ Create a symmetric KMS key
resource "aws_kms_key" "datacenter_kms_key" {
  description              = "KMS key for datacenter sensitive data encryption"
  key_usage                = "ENCRYPT_DECRYPT"
  customer_master_key_spec = "SYMMETRIC_DEFAULT"
  enable_key_rotation      = true

  tags = {
    Name = "datacenter-kms-key"
  }
}

# 2️⃣ Create an alias for easier key reference
resource "aws_kms_alias" "datacenter_kms_alias" {
  name          = "alias/datacenter-kms-key"
  target_key_id = aws_kms_key.datacenter_kms_key.id
}

# 3️⃣ Read the plaintext content from the sensitive file
locals {
  sensitive_file_path = "/home/bob/terraform/SensitiveData.txt"
  sensitive_plaintext = file(local.sensitive_file_path)
}

# 4️⃣ Encrypt the file content using the KMS key
resource "aws_kms_ciphertext" "encrypted_data" {
  key_id    = aws_kms_key.datacenter_kms_key.arn
  plaintext = local.sensitive_plaintext
}

# 5️⃣ Save the encrypted data to a file (base64 encoded)
resource "local_file" "encrypted_file" {
  filename = "/home/bob/terraform/EncryptedData.bin"
  content  = aws_kms_ciphertext.encrypted_data.ciphertext_blob
}

# 6️⃣ Decrypt the ciphertext using aws_kms_secrets data source
data "aws_kms_secrets" "decrypted_data" {
  secret {
    name    = "decrypted"
    payload = aws_kms_ciphertext.encrypted_data.ciphertext_blob
  }
}

# 7️⃣ Save decrypted data for verification
resource "local_file" "decrypted_file" {
  filename = "/home/bob/terraform/DecryptedData.txt"
  content  = data.aws_kms_secrets.decrypted_data.plaintext["decrypted"]
}

outputs.tf

output "kke_kms_key_name" {
  description = "Name tag of the KMS key created"
  value       = aws_kms_key.datacenter_kms_key.tags["Name"]
}