Files
acdl/modules/l1/dynamodb/terraform/main.tf
T
Jon Chery 9f94103c57 feat(P02 W0): dynamodb L1 primitive — interface, terraform, registry, tests (REQ-322)
New L1 module modules/l1/dynamodb/ (stack type aws:dynamodb:table).
Terraform aws_dynamodb_table with PK + optional SK, PAY_PER_REQUEST
default, SSE-KMS + PITR + prevent_destroy per v1.8 NFR defaults.
Registry entry (kind l1), catalog row, test_adapter.py updated to
15 entries / 13 L1. 45 tests passing.

---ci---
project: acdl
phase: 2
milestone: v1.26
status: execute
phase_role: execution
wave: 0
requirements: [REQ-322]
---/ci---
2026-08-18 00:22:19 +00:00

75 lines
1.1 KiB
Terraform

resource "aws_dynamodb_table" "this" {
count = var.enabled ? 1 : 0
name = var.table_name
billing_mode = var.billing_mode
hash_key = var.pk
range_key = var.sk != "" ? var.sk : null
attribute {
name = var.pk
type = "S"
}
dynamic "attribute" {
for_each = var.sk != "" ? [var.sk] : []
content {
name = attribute.value
type = "S"
}
}
point_in_time_recovery {
enabled = true
}
server_side_encryption {
enabled = true
}
tags = {
"nova:managed-by" = "platform"
"nova:module" = "dynamodb"
}
lifecycle {
prevent_destroy = true
}
}
variable "table_name" {
type = string
}
variable "region" {
type = string
default = "us-east-1"
}
variable "pk" {
type = string
}
variable "sk" {
type = string
default = ""
}
variable "billing_mode" {
type = string
default = "PAY_PER_REQUEST"
}
variable "enabled" {
type = bool
default = true
}
output "table_arn" {
value = var.enabled ? aws_dynamodb_table.this[0].arn : ""
}
output "table_name" {
value = var.enabled ? aws_dynamodb_table.this[0].name : ""
}