diff --git a/services/terraform/dev/main.tf b/services/terraform/dev/main.tf --- a/services/terraform/dev/main.tf +++ b/services/terraform/dev/main.tf @@ -35,5 +35,6 @@ # Shared resources between local dev environment and remote AWS module "shared" { source = "../modules/shared" + is_dev = true } diff --git a/services/terraform/modules/shared/dynamodb.tf b/services/terraform/modules/shared/dynamodb.tf --- a/services/terraform/modules/shared/dynamodb.tf +++ b/services/terraform/modules/shared/dynamodb.tf @@ -1,9 +1,8 @@ resource "aws_dynamodb_table" "backup-service-backup" { - name = "backup-service-backup" - hash_key = "userID" - range_key = "backupID" - write_capacity = 10 - read_capacity = 10 + name = "backup-service-backup" + hash_key = "userID" + range_key = "backupID" + billing_mode = "PAY_PER_REQUEST" attribute { name = "userID" @@ -24,19 +23,16 @@ name = "userID-created-index" hash_key = "userID" range_key = "created" - write_capacity = 10 - read_capacity = 10 projection_type = "INCLUDE" non_key_attributes = ["recoveryData"] } } resource "aws_dynamodb_table" "backup-service-log" { - name = "backup-service-log" - hash_key = "backupID" - range_key = "logID" - write_capacity = 10 - read_capacity = 10 + name = "backup-service-log" + hash_key = "backupID" + range_key = "logID" + billing_mode = "PAY_PER_REQUEST" attribute { name = "backupID" @@ -50,10 +46,9 @@ } resource "aws_dynamodb_table" "blob-service-blob" { - name = "blob-service-blob" - hash_key = "blobHash" - write_capacity = 10 - read_capacity = 10 + name = "blob-service-blob" + hash_key = "blobHash" + billing_mode = "PAY_PER_REQUEST" attribute { name = "blobHash" @@ -62,10 +57,9 @@ } resource "aws_dynamodb_table" "blob-service-reverse-index" { - name = "blob-service-reverse-index" - hash_key = "holder" - write_capacity = 10 - read_capacity = 10 + name = "blob-service-reverse-index" + hash_key = "holder" + billing_mode = "PAY_PER_REQUEST" attribute { name = "holder" @@ -80,18 +74,18 @@ global_secondary_index { name = "blobHash-index" hash_key = "blobHash" - write_capacity = 10 - read_capacity = 10 projection_type = "ALL" } } resource "aws_dynamodb_table" "tunnelbroker-undelivered-messages" { - name = "tunnelbroker-undelivered-messages" - hash_key = "deviceID" - range_key = "createdAt" - write_capacity = 10 - read_capacity = 10 + # This table doesnt exist in prod + count = var.is_dev ? 1 : 0 + + name = "tunnelbroker-undelivered-messages" + hash_key = "deviceID" + range_key = "createdAt" + billing_mode = "PAY_PER_REQUEST" attribute { name = "deviceID" @@ -105,10 +99,9 @@ } resource "aws_dynamodb_table" "identity-users" { - name = "identity-users" - hash_key = "userID" - write_capacity = 10 - read_capacity = 10 + name = "identity-users" + hash_key = "userID" + billing_mode = "PAY_PER_REQUEST" attribute { name = "userID" @@ -120,34 +113,42 @@ type = "S" } - attribute { - name = "walletAddress" - type = "S" + # walletAddress not defined in prod + dynamic "attribute" { + # Create a dummy list to iterate over if is_dev is true + for_each = var.is_dev ? [1] : [] + content { + name = "walletAddress" + type = "S" + } } global_secondary_index { name = "username-index" hash_key = "username" - write_capacity = 10 - read_capacity = 10 projection_type = "KEYS_ONLY" } - global_secondary_index { - name = "walletAddress-index" - hash_key = "walletAddress" - write_capacity = 10 - read_capacity = 10 - projection_type = "KEYS_ONLY" + # walletAddress not defined in prod + dynamic "global_secondary_index" { + # Create a dummy list to iterate over if is_dev is true + for_each = var.is_dev ? [1] : [] + content { + name = "walletAddress-index" + hash_key = "walletAddress" + projection_type = "KEYS_ONLY" + } } } # Identity users with opaque_ke 2.0 credentials resource "aws_dynamodb_table" "identity-users-opaque2" { - name = "identity-users-opaque2" - hash_key = "userID" - write_capacity = 10 - read_capacity = 10 + # This table doesnt exist in prod + count = var.is_dev ? 1 : 0 + + name = "identity-users-opaque2" + hash_key = "userID" + billing_mode = "PAY_PER_REQUEST" attribute { name = "userID" @@ -167,26 +168,21 @@ global_secondary_index { name = "username-index" hash_key = "username" - write_capacity = 10 - read_capacity = 10 projection_type = "KEYS_ONLY" } global_secondary_index { name = "walletAddress-index" hash_key = "walletAddress" - write_capacity = 10 - read_capacity = 10 projection_type = "KEYS_ONLY" } } resource "aws_dynamodb_table" "identity-tokens" { - name = "identity-tokens" - hash_key = "userID" - range_key = "signingPublicKey" - write_capacity = 10 - read_capacity = 10 + name = "identity-tokens" + hash_key = "userID" + range_key = "signingPublicKey" + billing_mode = "PAY_PER_REQUEST" attribute { name = "userID" @@ -200,10 +196,12 @@ } resource "aws_dynamodb_table" "identity-nonces" { - name = "identity-nonces" - hash_key = "nonce" - write_capacity = 10 - read_capacity = 10 + # This table doesnt exist in prod + count = var.is_dev ? 1 : 0 + + name = "identity-nonces" + hash_key = "nonce" + billing_mode = "PAY_PER_REQUEST" attribute { name = "nonce" @@ -212,10 +210,9 @@ } resource "aws_dynamodb_table" "identity-reserved-usernames" { - name = "identity-reserved-usernames" - hash_key = "username" - write_capacity = 10 - read_capacity = 10 + name = "identity-reserved-usernames" + hash_key = "username" + billing_mode = "PAY_PER_REQUEST" attribute { name = "username" diff --git a/services/terraform/modules/shared/variables.tf b/services/terraform/modules/shared/variables.tf new file mode 100644 --- /dev/null +++ b/services/terraform/modules/shared/variables.tf @@ -0,0 +1,4 @@ +variable "is_dev" { + type = bool + default = false +}