Skip to content

Commit

Permalink
Adding indexes support (#4)
Browse files Browse the repository at this point in the history
* Adding indexes support

* Updating README

* Fixing scalable_dimension for indexes autoscaling
  • Loading branch information
emmekappa authored and aknysh committed May 19, 2018
1 parent 0d3d38a commit 43735d1
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ module "dynamodb_autoscaler" {
stage = "dev"
name = "cluster"
dynamodb_table_name = "cp-dev-cluster-terraform-state-lock"
dynamodb_indexes = [ "first-index", "second-index" ]
dynamodb_table_arn = "arn:aws:dynamodb:us-east-1:123456789012:table/cp-dev-cluster-terraform-state-lock"
autoscale_write_target = 10
autoscale_read_target = 10
Expand All @@ -33,6 +34,7 @@ module "dynamodb_autoscaler" {
| `stage` | `` | Stage (_e.g._ `prod`, `dev`, `staging`) | Yes |
| `name` | `` | Name (_e.g._ `app` or `cluster`) | Yes |
| `dynamodb_table_name` | `` | DynamoDB table name | Yes |
| `dynamodb_indexes` | `[]` | List of DynamoDB indexes | No |
| `dynamodb_table_arn` | `` | DynamoDB table ARN | Yes |
| `attributes` | `[]` | Additional attributes (_e.g._ `policy` or `role`) | No |
| `tags` | `{}` | Additional tags (_e.g._ `map("BusinessUnit","XYZ")` | No |
Expand Down
18 changes: 18 additions & 0 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,15 @@ resource "aws_appautoscaling_target" "read_target" {
service_namespace = "dynamodb"
}

resource "aws_appautoscaling_target" "read_target_index" {
count = "${length(var.dynamodb_indexes)}"
max_capacity = "${var.autoscale_max_read_capacity}"
min_capacity = "${var.autoscale_min_read_capacity}"
resource_id = "table/${var.dynamodb_table_name}/index/${element(var.dynamodb_indexes, count.index)}"
scalable_dimension = "dynamodb:index:ReadCapacityUnits"
service_namespace = "dynamodb"
}

resource "aws_appautoscaling_policy" "read_policy" {
count = "${var.enabled == "true" ? 1 : 0}"
name = "DynamoDBReadCapacityUtilization:${aws_appautoscaling_target.read_target.resource_id}"
Expand All @@ -112,6 +121,15 @@ resource "aws_appautoscaling_target" "write_target" {
service_namespace = "dynamodb"
}

resource "aws_appautoscaling_target" "write_target_index" {
count = "${length(var.dynamodb_indexes)}"
max_capacity = "${var.autoscale_max_write_capacity}"
min_capacity = "${var.autoscale_min_write_capacity}"
resource_id = "table/${var.dynamodb_table_name}/index/${element(var.dynamodb_indexes, count.index)}"
scalable_dimension = "dynamodb:index:WriteCapacityUnits"
service_namespace = "dynamodb"
}

resource "aws_appautoscaling_policy" "write_policy" {
count = "${var.enabled == "true" ? 1 : 0}"
name = "DynamoDBWriteCapacityUtilization:${aws_appautoscaling_target.write_target.resource_id}"
Expand Down
6 changes: 6 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ variable "dynamodb_table_arn" {
description = "DynamoDB table ARN"
}

variable "dynamodb_indexes" {
type = "list"
description = "List of DynamoDB indexes"
default = []
}

variable "autoscale_write_target" {
default = 10
description = "The target value for DynamoDB write autoscaling"
Expand Down

0 comments on commit 43735d1

Please sign in to comment.