9f94103c57
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---
75 lines
1.1 KiB
Terraform
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 : ""
|
|
}
|