Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/flaconi/terraform-aws-microservice

Boilerplate Terraform Module for creating resources for typical micro services.
https://github.com/flaconi/terraform-aws-microservice

aws dynamodb elasticache rds redis sqs terraform terraform-aws terraform-module

Last synced: about 5 hours ago
JSON representation

Boilerplate Terraform Module for creating resources for typical micro services.

Awesome Lists containing this project

README

        

# Microservice Boilerplate

[![lint](https://github.com/flaconi/terraform-aws-microservice/workflows/lint/badge.svg)](https://github.com/flaconi/terraform-aws-microservice/actions?query=workflow%3Alint)
[![test](https://github.com/flaconi/terraform-aws-microservice/workflows/test/badge.svg)](https://github.com/flaconi/terraform-aws-microservice/actions?query=workflow%3Atest)
[![Tag](https://img.shields.io/github/tag/flaconi/terraform-aws-microservice.svg)](https://github.com/flaconi/terraform-aws-microservice/releases)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)

This Terraform module can create typical resources needed for most microservices.

## Examples

* [DynamoDB](examples/dynamodb/)
* [IAM](examples/iam/)
* [RDS](examples/rds/)
* [Redis](examples/redis/)
* [S3](examples/s3/)
* [SQS](examples/sqs/)

## Usage

### DynamoDB Microservice

```hcl
module "microservice" {
source = "github.com/flaconi/terraform-aws-microservice"

env = "playground"
name = "sample"

# iam_user_enabled creates an user with keys, with `iam_role_enabled` the user can switch into the role created by `iam_role_enabled`
# For this example we're only creating a role with access to Dynamodb
iam_user_enabled = false

# iam_role_enabled creates a role.
iam_role_enabled = true

# Sample principal which can assume into this role
#iam_role_principals_arns = ["arn:aws:iam::12374567890:root"]

iam_inline_policies = [
{
name = "s3-access"
statements = [
{
actions = ["s3:ListBucket"]
resources = ["arn:aws:s3:::test"]
},
{
actions = ["s3:get*"]
resources = ["arn:aws:s3:::test/*"]
}
]
},
{
name = "kinesis-full-access"
statements = [
{
actions = ["kinesis:*"]
resources = ["*"]
},
]
}
]

# -------------------------------------------------------------------------------------------------
# DynamoDB
# This module re-uses an implementation of the module https://github.com/cloudposse/terraform-aws-dynamodb
# -------------------------------------------------------------------------------------------------
# `dynamodb_enabled` is set to true to enable Dynamodb
dynamodb_enabled = true
dynamodb_hash_key = "HashKey"
dynamodb_range_key = "RangeKey"

# dynamodb_attributes = []
# dynamodb_global_secondary_index_map = []
# dynamodb_local_secondary_index_map = []

tags = {
Name = "sample"
}
}
```

### Redis

```hcl
module "ms_sample_redis" {
source = "github.com/flaconi/terraform-aws-microservice"

env = "playground"
name = "sample"

vpc_tag_filter = {
"Name"= "dev-vpc",
"env"= "dev"
}

# redis_enabled - Set to false to prevent the module from creating any redis resources
redis_enabled = true

# redis_cluster_id_override - Use only lowercase, numbers and -, _., only use when it needs to be different from `var.name`
# redis_cluster_id_override = ""

# redis_subnet_tag_filter sets the datasource to match the subnet_id's where the RDS will be located
redis_subnet_tag_filter = {
"Name" = "dev-redis-subnet*"
"env" = "dev"
}
# redis_allowed_subnet_cidrs - List of CIDRs/subnets which should be able to connect to the Redis cluster
redis_allowed_subnet_cidrs = ["127.0.0.1/32"]

# redis_shards_count - Number of shards
redis_shards_count = 1

# Number of replica nodes in each node group
redis_replicas_count = 1

# redis_port - Redis Port
# redis_port = 6379

# redis_instance_type - Redis instance type
redis_instance_type = "cache.t2.micro"

# redis_group_engine_version - Redis engine version to be used
# redis_group_engine_version = "5.0.0"

# redis_group_parameter_group_name - Redis parameter group name"
# redis_group_parameter_group_name = "default.redis5.0.cluster.on"

# redis_snapshot_window - Redis snapshot window
# redis_snapshot_window = "00:00-05:00"

# redis_maintenance_window - Redis maintenance window
# redis_maintenance_window = "mon:10:00-mon:12:00"

tags = {
Name = "sample"
}
```

### RDS

```hcl
module "ms_sample_rds" {
source = "github.com/flaconi/terraform-aws-microservice"

env = "playground"
name = "sample"

vpc_tag_filter = {
"Name"= "dev-vpc",
"env"= "dev"
}

# rds_subnet_tag_filter sets the datasource to match the subnet_id's where the RDS will be located
rds_subnet_tag_filter = {
"Name" = "dev-rds-subnet*"
"env" = "dev"
}

# rds_enabled enables RDS
rds_enabled = true

# rds_allowed_subnet_cidrs specifices the allowed subnets
#rds_allowed_subnet_cidrs = ["127.0.0.1/32"]

# rds_admin_user sets the admin user, defaults to admin
# rds_admin_user = "demouser"
# rds_identifier_override overrides the name of the RDS instance, instead of `var.name`
# rds_identifier_override = "overridename"

# rds_engine sets the RDS instance engine
# rds_engine = "mysql"

# rds_major_engine_version RDS instance major engine version
# rds_major_engine_version = 5.7

# rds_family Parameter Group"
# rds_family = "mysql5.7"

# rds_node_type sets VM type which should be taken for nodes in the RDS instance
# rds_node_type = "db.t3.micro"

# rds_multi_az sets multi-az
# rds_multi_az = true

# rds_storage_type sets the RDS storage type
# rds_storage_type = "gp2"

# rds_allocated_storage sets the RDS storage size in Gb
# rds_allocated_storage = "20"

# rds_admin_pass sets the password in case `rds_admin_pass` is set to false
# rds_admin_pass = ""

# rds_use_random_password switched on sets a random password for the rds instance
# rds_use_random_password = true

# rds_parameter_group_name Parameter group for database
# rds_parameter_group_name = ""

# rds_option_group_name option groups for database
# rds_option_group_name = ""

# rds_port TCP port where DB accept connections
# rds_port = "3306"

# rds_db_subnet_group_name Subnet groups for RDS instance
# rds_db_subnet_group_name = ""

# rds_backup_retention_period Retention period for DB snapshots in days
rds_backup_retention_period = 14
# rds_deletion_protection Protect RDS instance from deletion
rds_deletion_protection = false
# rds_skip_final_snapshot Protect RDS instance from deletion
rds_skip_final_snapshot = true
# rds_storage_encrypted - enable encryption for RDS instance storage"
rds_storage_encrypted = true
# rds_kms_key_id - KMS key ARN for storage encryption, defaults to "" = RDS/KMS
rds_kms_key_id = ""
# rds_maintenance_window - Window of RDS Maintenance
rds_maintenance_window = "Mon:16:00-Mon:18:00"
# rds_backup_window - Backup Window
rds_backup_window = "03:00-06:00"

tags = {
Name = "sample"
}
}
```

## Resources

The following resources _CAN_ be created:

- 1 IAM Role
- 1 IAM User
- 1 DynamoDB
- 1 RDS Instance
- 1 Policy for accessing Dynamodb from the IAM Role
- 1 Redis cluster with required networking components

## Providers

| Name | Version |
|------|---------|
| [aws](#provider\_aws) | ~> 5.40 |
| [null](#provider\_null) | ~> 3.2 |
| [random](#provider\_random) | ~> 3.6 |

## Requirements

| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.3 |
| [aws](#requirement\_aws) | ~> 5.40 |
| [null](#requirement\_null) | ~> 3.2 |
| [random](#requirement\_random) | ~> 3.6 |

## Required Inputs

The following input variables are required:

### [env](#input\_env)

Description: The environment name to which this project will be applied against (e.g.: common, dev, prod, testing)

Type: `string`

### [name](#input\_name)

Description: The name of the microservice, the dependent resources will be created with this name interpolated

Type: `string`

### [tags](#input\_tags)

Description: tags to propagate to the resources

Type: `map(any)`

## Optional Inputs

The following input variables are optional (have default values):

### [rds\_copy\_tags\_to\_snapshot](#input\_rds\_copy\_tags\_to\_snapshot)

Description: On delete, copy all Instance tags to the final snapshot (if final\_snapshot\_identifier is specified)

Type: `bool`

Default: `true`

### [vpc\_tag\_filter](#input\_vpc\_tag\_filter)

Description: The map of tags to match the VPC tags with where the RDS or Redis or other networked AWS component of the Microservice resides

Type: `map(string)`

Default: `{}`

### [additional\_sg\_names\_for\_rds](#input\_additional\_sg\_names\_for\_rds)

Description: Name(s) of the additional VPC Security Group(s) to be attached to the RDS instance.

Type: `list(string)`

Default: `[]`

### [iam\_role\_enabled](#input\_iam\_role\_enabled)

Description: Set to false to prevent iam role creation

Type: `bool`

Default: `false`

### [iam\_role\_principals\_arns](#input\_iam\_role\_principals\_arns)

Description: List of ARNs to allow assuming the iam role. Could be AWS services or accounts, Kops nodes, IAM users or groups

Type: `list(string)`

Default: `[]`

### [iam\_user\_enabled](#input\_iam\_user\_enabled)

Description: Set to false to prevent iam user creation

Type: `bool`

Default: `false`

### [iam\_user\_path](#input\_iam\_user\_path)

Description: Set the path for the iam user

Type: `string`

Default: `"/"`

### [iam\_inline\_policies](#input\_iam\_inline\_policies)

Description: Policies applied to the assuming role

Type:

```hcl
list(object({
name = string
statements = list(object({
actions = list(string)
resources = list(string)
}))
}))
```

Default: `[]`

### [aws\_route53\_record\_ttl](#input\_aws\_route53\_record\_ttl)

Description: Time to live for DNS record used by the endpoints

Type: `string`

Default: `"60"`

### [aws\_route53\_zone\_endpoints\_enabled](#input\_aws\_route53\_zone\_endpoints\_enabled)

Description: To enable the lookup of the domain used for RDS/Redis private endpoint

Type: `bool`

Default: `false`

### [aws\_route53\_zone\_public\_endpoint\_enabled](#input\_aws\_route53\_zone\_public\_endpoint\_enabled)

Description: To enable the lookup of the domain used for RDS/Redis public endpoint, we need to set this to true

Type: `bool`

Default: `true`

### [aws\_route53\_zone\_private\_endpoint\_enabled](#input\_aws\_route53\_zone\_private\_endpoint\_enabled)

Description: To enable the lookup of the domain used for RDS/Redis private endpoint, we need to set this to true

Type: `bool`

Default: `true`

### [endpoints\_domain](#input\_endpoints\_domain)

Description: The domain / route53 zone we need to add a record with

Type: `string`

Default: `""`

### [aws\_route53\_rds\_subdomain\_override](#input\_aws\_route53\_rds\_subdomain\_override)

Description: To set a custom RDS DNS record subdomain instead of the RDS instance ID

Type: `string`

Default: `""`

### [dynamodb\_enabled](#input\_dynamodb\_enabled)

Description: Set to false to prevent the module from creating any dynamodb resources

Type: `bool`

Default: `false`

### [dynamodb\_billing](#input\_dynamodb\_billing)

Description: DynamoDB Billing mode. Can be PROVISIONED or PAY\_PER\_REQUEST

Type: `string`

Default: `"PROVISIONED"`

### [dynamodb\_table\_class](#input\_dynamodb\_table\_class)

Description: Storage class of the table

Type: `string`

Default: `"STANDARD"`

### [dynamodb\_name\_override](#input\_dynamodb\_name\_override)

Description: define dynamodb\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [dynamodb\_hash\_key](#input\_dynamodb\_hash\_key)

Description: DynamoDB table Hash Key

Type: `string`

Default: `""`

### [dynamodb\_hash\_key\_type](#input\_dynamodb\_hash\_key\_type)

Description: Hash Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb\_range\_key](#input\_dynamodb\_range\_key)

Description: DynamoDB table Range Key

Type: `string`

Default: `""`

### [dynamodb\_range\_key\_type](#input\_dynamodb\_range\_key\_type)

Description: Range Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb\_attributes](#input\_dynamodb\_attributes)

Description: Additional DynamoDB attributes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
type = string
}))
```

Default: `[]`

### [dynamodb\_global\_secondary\_index\_map](#input\_dynamodb\_global\_secondary\_index\_map)

Description: Additional global secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
hash_key = string
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
read_capacity = number
write_capacity = number
}))
```

Default: `[]`

### [dynamodb\_local\_secondary\_index\_map](#input\_dynamodb\_local\_secondary\_index\_map)

Description: Additional local secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
}))
```

Default: `[]`

### [dynamodb\_autoscale\_write\_target](#input\_dynamodb\_autoscale\_write\_target)

Description: The target value for DynamoDB write autoscaling

Type: `number`

Default: `50`

### [dynamodb\_autoscale\_read\_target](#input\_dynamodb\_autoscale\_read\_target)

Description: The target value for DynamoDB read autoscaling

Type: `number`

Default: `50`

### [dynamodb\_autoscale\_min\_read\_capacity](#input\_dynamodb\_autoscale\_min\_read\_capacity)

Description: DynamoDB autoscaling min read capacity

Type: `number`

Default: `5`

### [dynamodb\_autoscale\_max\_read\_capacity](#input\_dynamodb\_autoscale\_max\_read\_capacity)

Description: DynamoDB autoscaling max read capacity

Type: `number`

Default: `20`

### [dynamodb\_autoscale\_min\_write\_capacity](#input\_dynamodb\_autoscale\_min\_write\_capacity)

Description: DynamoDB autoscaling min write capacity

Type: `number`

Default: `5`

### [dynamodb\_autoscale\_max\_write\_capacity](#input\_dynamodb\_autoscale\_max\_write\_capacity)

Description: DynamoDB autoscaling max write capacity

Type: `number`

Default: `20`

### [dynamodb\_enable\_autoscaler](#input\_dynamodb\_enable\_autoscaler)

Description: Flag to enable/disable DynamoDB autoscaling

Type: `bool`

Default: `true`

### [dynamodb2\_enabled](#input\_dynamodb2\_enabled)

Description: Set to false to prevent the module from creating any dynamodb resources

Type: `bool`

Default: `false`

### [dynamodb2\_billing](#input\_dynamodb2\_billing)

Description: DynamoDB Billing mode. Can be PROVISIONED or PAY\_PER\_REQUEST

Type: `string`

Default: `"PROVISIONED"`

### [dynamodb2\_table\_class](#input\_dynamodb2\_table\_class)

Description: Storage class of the table

Type: `string`

Default: `"STANDARD"`

### [dynamodb2\_name\_override](#input\_dynamodb2\_name\_override)

Description: define dynamodb2\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [dynamodb2\_hash\_key](#input\_dynamodb2\_hash\_key)

Description: DynamoDB table Hash Key

Type: `string`

Default: `""`

### [dynamodb2\_hash\_key\_type](#input\_dynamodb2\_hash\_key\_type)

Description: Hash Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb2\_range\_key](#input\_dynamodb2\_range\_key)

Description: DynamoDB table Range Key

Type: `string`

Default: `""`

### [dynamodb2\_range\_key\_type](#input\_dynamodb2\_range\_key\_type)

Description: Range Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb2\_attributes](#input\_dynamodb2\_attributes)

Description: Additional DynamoDB attributes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
type = string
}))
```

Default: `[]`

### [dynamodb2\_global\_secondary\_index\_map](#input\_dynamodb2\_global\_secondary\_index\_map)

Description: Additional global secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
hash_key = string
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
read_capacity = number
write_capacity = number
}))
```

Default: `[]`

### [dynamodb2\_local\_secondary\_index\_map](#input\_dynamodb2\_local\_secondary\_index\_map)

Description: Additional local secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
}))
```

Default: `[]`

### [dynamodb2\_autoscale\_write\_target](#input\_dynamodb2\_autoscale\_write\_target)

Description: The target value for DynamoDB write autoscaling

Type: `number`

Default: `50`

### [dynamodb2\_autoscale\_read\_target](#input\_dynamodb2\_autoscale\_read\_target)

Description: The target value for DynamoDB read autoscaling

Type: `number`

Default: `50`

### [dynamodb2\_autoscale\_min\_read\_capacity](#input\_dynamodb2\_autoscale\_min\_read\_capacity)

Description: DynamoDB autoscaling min read capacity

Type: `number`

Default: `5`

### [dynamodb2\_autoscale\_max\_read\_capacity](#input\_dynamodb2\_autoscale\_max\_read\_capacity)

Description: DynamoDB autoscaling max read capacity

Type: `number`

Default: `20`

### [dynamodb2\_autoscale\_min\_write\_capacity](#input\_dynamodb2\_autoscale\_min\_write\_capacity)

Description: DynamoDB autoscaling min write capacity

Type: `number`

Default: `5`

### [dynamodb2\_autoscale\_max\_write\_capacity](#input\_dynamodb2\_autoscale\_max\_write\_capacity)

Description: DynamoDB autoscaling max write capacity

Type: `number`

Default: `20`

### [dynamodb2\_enable\_autoscaler](#input\_dynamodb2\_enable\_autoscaler)

Description: Flag to enable/disable DynamoDB autoscaling

Type: `bool`

Default: `true`

### [dynamodb3\_enabled](#input\_dynamodb3\_enabled)

Description: Set to false to prevent the module from creating any dynamodb resources

Type: `bool`

Default: `false`

### [dynamodb3\_billing](#input\_dynamodb3\_billing)

Description: DynamoDB Billing mode. Can be PROVISIONED or PAY\_PER\_REQUEST

Type: `string`

Default: `"PROVISIONED"`

### [dynamodb3\_table\_class](#input\_dynamodb3\_table\_class)

Description: Storage class of the table

Type: `string`

Default: `"STANDARD"`

### [dynamodb3\_name\_override](#input\_dynamodb3\_name\_override)

Description: define dynamodb3\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [dynamodb3\_hash\_key](#input\_dynamodb3\_hash\_key)

Description: DynamoDB table Hash Key

Type: `string`

Default: `""`

### [dynamodb3\_hash\_key\_type](#input\_dynamodb3\_hash\_key\_type)

Description: Hash Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb3\_range\_key](#input\_dynamodb3\_range\_key)

Description: DynamoDB table Range Key

Type: `string`

Default: `""`

### [dynamodb3\_range\_key\_type](#input\_dynamodb3\_range\_key\_type)

Description: Range Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb3\_attributes](#input\_dynamodb3\_attributes)

Description: Additional DynamoDB attributes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
type = string
}))
```

Default: `[]`

### [dynamodb3\_global\_secondary\_index\_map](#input\_dynamodb3\_global\_secondary\_index\_map)

Description: Additional global secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
hash_key = string
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
read_capacity = number
write_capacity = number
}))
```

Default: `[]`

### [dynamodb3\_local\_secondary\_index\_map](#input\_dynamodb3\_local\_secondary\_index\_map)

Description: Additional local secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
}))
```

Default: `[]`

### [dynamodb3\_autoscale\_write\_target](#input\_dynamodb3\_autoscale\_write\_target)

Description: The target value for DynamoDB write autoscaling

Type: `number`

Default: `50`

### [dynamodb3\_autoscale\_read\_target](#input\_dynamodb3\_autoscale\_read\_target)

Description: The target value for DynamoDB read autoscaling

Type: `number`

Default: `50`

### [dynamodb3\_autoscale\_min\_read\_capacity](#input\_dynamodb3\_autoscale\_min\_read\_capacity)

Description: DynamoDB autoscaling min read capacity

Type: `number`

Default: `5`

### [dynamodb3\_autoscale\_max\_read\_capacity](#input\_dynamodb3\_autoscale\_max\_read\_capacity)

Description: DynamoDB autoscaling max read capacity

Type: `number`

Default: `20`

### [dynamodb3\_autoscale\_min\_write\_capacity](#input\_dynamodb3\_autoscale\_min\_write\_capacity)

Description: DynamoDB autoscaling min write capacity

Type: `number`

Default: `5`

### [dynamodb3\_autoscale\_max\_write\_capacity](#input\_dynamodb3\_autoscale\_max\_write\_capacity)

Description: DynamoDB autoscaling max write capacity

Type: `number`

Default: `20`

### [dynamodb3\_enable\_autoscaler](#input\_dynamodb3\_enable\_autoscaler)

Description: Flag to enable/disable DynamoDB autoscaling

Type: `bool`

Default: `true`

### [dynamodb4\_enabled](#input\_dynamodb4\_enabled)

Description: Set to false to prevent the module from creating any dynamodb resources

Type: `bool`

Default: `false`

### [dynamodb4\_billing](#input\_dynamodb4\_billing)

Description: DynamoDB Billing mode. Can be PROVISIONED or PAY\_PER\_REQUEST

Type: `string`

Default: `"PROVISIONED"`

### [dynamodb4\_table\_class](#input\_dynamodb4\_table\_class)

Description: Storage class of the table

Type: `string`

Default: `"STANDARD"`

### [dynamodb4\_name\_override](#input\_dynamodb4\_name\_override)

Description: define dynamodb4\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [dynamodb4\_hash\_key](#input\_dynamodb4\_hash\_key)

Description: DynamoDB table Hash Key

Type: `string`

Default: `""`

### [dynamodb4\_hash\_key\_type](#input\_dynamodb4\_hash\_key\_type)

Description: Hash Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb4\_range\_key](#input\_dynamodb4\_range\_key)

Description: DynamoDB table Range Key

Type: `string`

Default: `""`

### [dynamodb4\_range\_key\_type](#input\_dynamodb4\_range\_key\_type)

Description: Range Key type, which must be a scalar type: `S`, `N`, or `B` for (S)tring, (N)umber or (B)inary data

Type: `string`

Default: `"S"`

### [dynamodb4\_attributes](#input\_dynamodb4\_attributes)

Description: Additional DynamoDB attributes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
type = string
}))
```

Default: `[]`

### [dynamodb4\_global\_secondary\_index\_map](#input\_dynamodb4\_global\_secondary\_index\_map)

Description: Additional global secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
hash_key = string
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
read_capacity = number
write_capacity = number
}))
```

Default: `[]`

### [dynamodb4\_local\_secondary\_index\_map](#input\_dynamodb4\_local\_secondary\_index\_map)

Description: Additional local secondary indexes in the form of a list of mapped values

Type:

```hcl
list(object({
name = string
non_key_attributes = list(string)
projection_type = string
range_key = string
}))
```

Default: `[]`

### [dynamodb4\_autoscale\_write\_target](#input\_dynamodb4\_autoscale\_write\_target)

Description: The target value for DynamoDB write autoscaling

Type: `number`

Default: `50`

### [dynamodb4\_autoscale\_read\_target](#input\_dynamodb4\_autoscale\_read\_target)

Description: The target value for DynamoDB read autoscaling

Type: `number`

Default: `50`

### [dynamodb4\_autoscale\_min\_read\_capacity](#input\_dynamodb4\_autoscale\_min\_read\_capacity)

Description: DynamoDB autoscaling min read capacity

Type: `number`

Default: `5`

### [dynamodb4\_autoscale\_max\_read\_capacity](#input\_dynamodb4\_autoscale\_max\_read\_capacity)

Description: DynamoDB autoscaling max read capacity

Type: `number`

Default: `20`

### [dynamodb4\_autoscale\_min\_write\_capacity](#input\_dynamodb4\_autoscale\_min\_write\_capacity)

Description: DynamoDB autoscaling min write capacity

Type: `number`

Default: `5`

### [dynamodb4\_autoscale\_max\_write\_capacity](#input\_dynamodb4\_autoscale\_max\_write\_capacity)

Description: DynamoDB autoscaling max write capacity

Type: `number`

Default: `20`

### [dynamodb4\_enable\_autoscaler](#input\_dynamodb4\_enable\_autoscaler)

Description: Flag to enable/disable DynamoDB autoscaling

Type: `bool`

Default: `true`

### [redis\_enabled](#input\_redis\_enabled)

Description: Set to false to prevent the module from creating any redis resources

Type: `bool`

Default: `false`

### [redis\_cluster\_id\_override](#input\_redis\_cluster\_id\_override)

Description: Redis cluster ID. Use only lowercase, numbers and -, \_., only use when it needs to be different from var.name

Type: `string`

Default: `""`

### [redis\_port](#input\_redis\_port)

Description: Redis port

Type: `string`

Default: `"6379"`

### [redis\_instance\_type](#input\_redis\_instance\_type)

Description: Redis instance type

Type: `string`

Default: `"cache.m4.large"`

### [redis\_shards\_count](#input\_redis\_shards\_count)

Description: Number of shards

Type: `number`

Default: `1`

### [redis\_group\_engine\_version](#input\_redis\_group\_engine\_version)

Description: Redis engine version to be used

Type: `string`

Default: `"5.0.0"`

### [redis\_group\_parameter\_group\_name](#input\_redis\_group\_parameter\_group\_name)

Description: Redis parameter group name

Type: `string`

Default: `"default.redis5.0.cluster.on"`

### [redis\_snapshot\_window](#input\_redis\_snapshot\_window)

Description: Redis snapshot window

Type: `string`

Default: `"00:00-05:00"`

### [redis\_maintenance\_window](#input\_redis\_maintenance\_window)

Description: Redis snapshot window

Type: `string`

Default: `"mon:10:00-mon:12:00"`

### [redis\_auto\_minor\_version\_upgrade](#input\_redis\_auto\_minor\_version\_upgrade)

Description: Redis allow auto minor version upgrade

Type: `bool`

Default: `true`

### [redis\_at\_rest\_encryption\_enabled](#input\_redis\_at\_rest\_encryption\_enabled)

Description: Redis encrypt storage

Type: `bool`

Default: `false`

### [redis\_transit\_encryption\_enabled](#input\_redis\_transit\_encryption\_enabled)

Description: Redis encrypt transit TLS

Type: `bool`

Default: `false`

### [redis\_replicas\_count](#input\_redis\_replicas\_count)

Description: Number of replica nodes in each node group

Type: `number`

Default: `1`

### [redis\_allowed\_subnet\_cidrs](#input\_redis\_allowed\_subnet\_cidrs)

Description: List of CIDRs/subnets which should be able to connect to the Redis cluster

Type: `list(string)`

Default:

```json
[
"127.0.0.1/32"
]
```

### [redis\_subnet\_tag\_filter](#input\_redis\_subnet\_tag\_filter)

Description: The Map to filter the subnets of the VPC where the Redis component of the Microservice resides

Type: `map(string)`

Default: `{}`

### [redis\_subnet\_cidr\_block\_filter](#input\_redis\_subnet\_cidr\_block\_filter)

Description: List of CIDR blocks to filter subnets of the VPC where the Redis component of the Microservice resides

Type: `list(string)`

Default: `[]`

### [redis\_apply\_immediately](#input\_redis\_apply\_immediately)

Description: Specifies whether any modifications are applied immediately, or during the next maintenance window.

Type: `bool`

Default: `false`

### [redis\_multi\_az\_enabled](#input\_redis\_multi\_az\_enabled)

Description: Specifies whether to enable Multi-AZ Support for the replication group. If true, automatic\_failover\_enabled must also be enabled.

Type: `bool`

Default: `false`

### [rds\_apply\_immediately](#input\_rds\_apply\_immediately)

Description: Specifies whether any database modifications are applied immediately, or during the next maintenance window

Type: `bool`

Default: `false`

### [rds\_enabled](#input\_rds\_enabled)

Description: Set to false to prevent the module from creating any rds resources

Type: `bool`

Default: `false`

### [rds\_enable\_s3\_dump](#input\_rds\_enable\_s3\_dump)

Description: Set to true to allow the module to create RDS DB dump resources.

Type: `bool`

Default: `false`

### [rds\_s3\_dump\_name\_prefix](#input\_rds\_s3\_dump\_name\_prefix)

Description: The S3 name prefix

Type: `string`

Default: `""`

### [rds\_s3\_dump\_allowed\_ips](#input\_rds\_s3\_dump\_allowed\_ips)

Description: List of CIDRs allowed to access data on the S3 bucket for RDS DB dumps

Type: `list(string)`

Default: `[]`

### [rds\_s3\_kms\_dump\_key\_additional\_role\_arns](#input\_rds\_s3\_kms\_dump\_key\_additional\_role\_arns)

Description: List of IAM role ARNs that are able to access the KMS key used for encrypting RDS dump files in the S3 bucket

Type: `list(string)`

Default: `[]`

### [rds\_s3\_dump\_role\_arn](#input\_rds\_s3\_dump\_role\_arn)

Description: IAM role ARN to be associated with the RDS instance, for being able to access the S3 dump bucket(s). If this is set, the module will not create the role nor its policy but instead will directly associate the RDS instance with passed role. If this is not set, the module will handle the creation of the IAM policy and the role itself.

Type: `string`

Default: `""`

### [rds\_s3\_dump\_block\_public\_access](#input\_rds\_s3\_dump\_block\_public\_access)

Description: Object that defines which public access should be blocked

Type:

```hcl
object({
block_public_acls = bool
block_public_policy = bool
ignore_public_acls = bool
restrict_public_buckets = bool
})
```

Default:

```json
{
"block_public_acls": true,
"block_public_policy": true,
"ignore_public_acls": true,
"restrict_public_buckets": true
}
```

### [rds\_s3\_dump\_lifecycle\_rules](#input\_rds\_s3\_dump\_lifecycle\_rules)

Description: RDS S3 Dump Lifecycle rules

Type:

```hcl
list(object({
id = string
status = optional(string, "Enabled")
prefix = string
expiration = optional(list(object({
days = optional(number)
date = optional(string)
expired_object_delete_marker = optional(bool)
})), [])
transition = optional(list(object({
days = optional(number)
date = optional(string)
storage_class = string
})), [])
noncurrent_version_expiration = optional(list(object({
noncurrent_days = optional(number)
newer_noncurrent_versions = optional(string)
})), [])
noncurrent_version_transition = optional(list(object({
noncurrent_days = optional(number)
newer_noncurrent_versions = optional(string)
storage_class = string
})), [])
}))
```

Default: `[]`

### [rds\_identifier\_override](#input\_rds\_identifier\_override)

Description: RDS identifier override. Use only lowercase, numbers and -, \_., only use when it needs to be different from var.name

Type: `string`

Default: `""`

### [rds\_dbname\_override](#input\_rds\_dbname\_override)

Description: RDS DB Name override in case the identifier is not wished as db name

Type: `string`

Default: `""`

### [rds\_allowed\_subnet\_cidrs](#input\_rds\_allowed\_subnet\_cidrs)

Description: List of CIDRs/subnets which should be able to connect to the RDS instance

Type: `list(string)`

Default:

```json
[
"127.0.0.1/32"
]
```

### [rds\_timeouts](#input\_rds\_timeouts)

Description: (Optional) Updated Terraform resource management timeouts. Applies to `aws_db_instance` in particular to permit resource management times

Type: `map(string)`

Default:

```json
{
"create": "40m",
"delete": "40m",
"update": "80m"
}
```

### [rds\_option\_group\_timeouts](#input\_rds\_option\_group\_timeouts)

Description: Define maximum timeout for deletion of `aws_db_option_group` resource

Type: `map(string)`

Default:

```json
{
"delete": "15m"
}
```

### [rds\_engine](#input\_rds\_engine)

Description: RDS instance engine

Type: `string`

Default: `"mysql"`

### [rds\_major\_engine\_version](#input\_rds\_major\_engine\_version)

Description: RDS instance major engine version

Type: `string`

Default: `"5.7"`

### [rds\_auto\_minor\_version\_upgrade](#input\_rds\_auto\_minor\_version\_upgrade)

Description: Indicates that minor engine upgrades will be applied automatically to the DB instance during the maintenance window

Type: `bool`

Default: `false`

### [rds\_engine\_version](#input\_rds\_engine\_version)

Description: RDS instance engine version

Type: `string`

Default: `"5.7.19"`

### [rds\_family](#input\_rds\_family)

Description: Parameter Group

Type: `string`

Default: `"mysql5.7"`

### [rds\_node\_type](#input\_rds\_node\_type)

Description: VM type which should be taken for nodes in the RDS instance

Type: `string`

Default: `"db.t3.micro"`

### [rds\_multi\_az](#input\_rds\_multi\_az)

Description: Replication settings

Type: `bool`

Default: `true`

### [rds\_storage\_type](#input\_rds\_storage\_type)

Description: Storage type

Type: `string`

Default: `"gp3"`

### [rds\_allocated\_storage](#input\_rds\_allocated\_storage)

Description: Storage size in Gb

Type: `string`

Default: `20`

### [rds\_max\_allocated\_storage](#input\_rds\_max\_allocated\_storage)

Description: Specifies the value for Storage Autoscaling

Type: `number`

Default: `0`

### [rds\_iops](#input\_rds\_iops)

Description: The amount of provisioned IOPS. Setting this implies a storage\_type of 'io1'

Type: `number`

Default: `0`

### [rds\_admin\_user](#input\_rds\_admin\_user)

Description: Admin user name, should default when empty

Type: `string`

Default: `"admin"`

### [rds\_admin\_pass](#input\_rds\_admin\_pass)

Description: Admin user password. At least 8 characters.

Type: `string`

Default: `""`

### [rds\_use\_random\_password](#input\_rds\_use\_random\_password)

Description: with rds\_use\_random\_password set to true the RDS database will be configured with a random password

Type: `bool`

Default: `true`

### [rds\_iam\_database\_authentication\_enabled](#input\_rds\_iam\_database\_authentication\_enabled)

Description: Enable / disable IAM database authentication

Type: `string`

Default: `"false"`

### [rds\_parameter\_group\_name](#input\_rds\_parameter\_group\_name)

Description: Parameter group for database

Type: `string`

Default: `""`

### [rds\_parameters](#input\_rds\_parameters)

Description: List of RDS parameters to apply

Type: `list(map(string))`

Default: `[]`

### [rds\_option\_group\_name](#input\_rds\_option\_group\_name)

Description: Option groups for database

Type: `string`

Default: `""`

### [rds\_options](#input\_rds\_options)

Description: A list of RDS Options to apply

Type: `any`

Default: `[]`

### [rds\_ca\_cert\_identifier](#input\_rds\_ca\_cert\_identifier)

Description: The identifier of the CA certificate for the DB instance.

Type: `string`

Default: `"rds-ca-2019"`

### [rds\_license\_model](#input\_rds\_license\_model)

Description: License model information for this DB instance. Optional, but required for some DB engines, i.e. Oracle SE1

Type: `string`

Default: `""`

### [rds\_enabled\_cloudwatch\_logs\_exports](#input\_rds\_enabled\_cloudwatch\_logs\_exports)

Description: List of log types to enable for exporting to CloudWatch logs. If omitted, no logs will be exported. Valid values (depending on engine): alert, audit, error, general, listener, slowquery, trace, postgresql (PostgreSQL), upgrade (PostgreSQL).

Type: `list(string)`

Default: `[]`

### [rds\_performance\_insights\_enabled](#input\_rds\_performance\_insights\_enabled)

Description: Specifies whether Performance Insights are enabled

Type: `bool`

Default: `false`

### [rds\_performance\_insights\_retention\_period](#input\_rds\_performance\_insights\_retention\_period)

Description: The amount of time in days to retain Performance Insights data. Either 7 (7 days) or 731 (2 years).

Type: `number`

Default: `7`

### [rds\_enhanced\_monitoring\_interval](#input\_rds\_enhanced\_monitoring\_interval)

Description: The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0. Valid Values: 0, 1, 5, 10, 15, 30, 60.

Type: `number`

Default: `0`

### [rds\_db\_subnet\_group\_description](#input\_rds\_db\_subnet\_group\_description)

Description: Description of the DB subnet group to create

Type: `string`

Default: `""`

### [rds\_parameter\_group\_description](#input\_rds\_parameter\_group\_description)

Description: Description of the DB parameter group to create

Type: `string`

Default: `""`

### [rds\_option\_group\_description](#input\_rds\_option\_group\_description)

Description: The description of the option group

Type: `string`

Default: `""`

### [rds\_option\_group\_use\_name\_prefix](#input\_rds\_option\_group\_use\_name\_prefix)

Description: Determines whether to use `option_group_name` as is or create a unique name beginning with the `option_group_name` as the prefix

Type: `bool`

Default: `true`

### [rds\_port](#input\_rds\_port)

Description: TCP port where DB accept connections

Type: `string`

Default: `"3306"`

### [rds\_db\_subnet\_group\_name](#input\_rds\_db\_subnet\_group\_name)

Description: Subnet groups for RDS instance

Type: `string`

Default: `""`

### [rds\_subnet\_tag\_filter](#input\_rds\_subnet\_tag\_filter)

Description: The Map to filter the subnets of the VPC where the RDS component of the Microservice resides

Type: `map(string)`

Default: `{}`

### [rds\_subnet\_cidr\_block\_filter](#input\_rds\_subnet\_cidr\_block\_filter)

Description: List of CIDR blocks to filter subnets of the VPC where the RDS component of the Microservice resides

Type: `list(string)`

Default: `[]`

### [rds\_final\_snapshot\_identifier\_override](#input\_rds\_final\_snapshot\_identifier\_override)

Description: RDS final snapshot identifier override.

Type: `string`

Default: `""`

### [rds\_db\_snapshot\_name](#input\_rds\_db\_snapshot\_name)

Description: Specifies whether or not to create this database from a snapshot.

Type: `string`

Default: `""`

### [rds\_backup\_retention\_period](#input\_rds\_backup\_retention\_period)

Description: Retention period for DB snapshots in days

Type: `string`

Default: `14`

### [rds\_deletion\_protection](#input\_rds\_deletion\_protection)

Description: Protect RDS instance from deletion

Type: `bool`

Default: `true`

### [rds\_skip\_final\_snapshot](#input\_rds\_skip\_final\_snapshot)

Description: Skip final snapshot on deletion

Type: `bool`

Default: `false`

### [rds\_storage\_encrypted](#input\_rds\_storage\_encrypted)

Description: Enable encryption for RDS instance storage

Type: `bool`

Default: `true`

### [rds\_kms\_key\_id](#input\_rds\_kms\_key\_id)

Description: KMS key ARN for storage encryption

Type: `string`

Default: `""`

### [rds\_maintenance\_window](#input\_rds\_maintenance\_window)

Description: Window of RDS Maintenance

Type: `string`

Default: `"Mon:16:00-Mon:18:00"`

### [rds\_backup\_window](#input\_rds\_backup\_window)

Description: Backup window

Type: `string`

Default: `"03:00-06:00"`

### [s3\_enabled](#input\_s3\_enabled)

Description: S3 bucket creation and iam policy creation enabled

Type: `bool`

Default: `false`

### [s3\_identifier](#input\_s3\_identifier)

Description: The S3 Bucket name

Type: `string`

Default: `""`

### [s3\_force\_destroy](#input\_s3\_force\_destroy)

Description: S3 Force destroy

Type: `bool`

Default: `true`

### [s3\_versioning\_enabled](#input\_s3\_versioning\_enabled)

Description: S3 Versioning enabled

Type: `string`

Default: `"Enabled"`

### [s3\_lifecycle\_rules](#input\_s3\_lifecycle\_rules)

Description: S3 Lifecycle rules

Type:

```hcl
list(object({
id = string
status = optional(string, "Enabled")
prefix = string
expiration = optional(list(object({
days = optional(number)
date = optional(string)
expired_object_delete_marker = optional(bool)
})), [])
transition = optional(list(object({
days = optional(number)
date = optional(string)
storage_class = string
})), [])
noncurrent_version_expiration = optional(list(object({
noncurrent_days = optional(number)
newer_noncurrent_versions = optional(string)
})), [])
noncurrent_version_transition = optional(list(object({
noncurrent_days = optional(number)
newer_noncurrent_versions = optional(string)
storage_class = string
})), [])
}))
```

Default: `[]`

### [sqs1\_enabled](#input\_sqs1\_enabled)

Description: Set to false to prevent the module from creating any sqs resources

Type: `bool`

Default: `false`

### [sqs1\_name\_override](#input\_sqs1\_name\_override)

Description: define sqs1\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [sqs1\_delay\_seconds](#input\_sqs1\_delay\_seconds)

Description: define sqs1\_delay\_seconds

Type: `number`

Default: `0`

### [sqs1\_fifo\_queue](#input\_sqs1\_fifo\_queue)

Description: Boolean designating a FIFO queue

Type: `bool`

Default: `false`

### [sqs1\_max\_message\_size](#input\_sqs1\_max\_message\_size)

Description: The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days)

Type: `number`

Default: `262144`

### [sqs1\_receive\_wait\_time\_seconds](#input\_sqs1\_receive\_wait\_time\_seconds)

Description: The time for which a ReceiveMessage call will wait for a message to arrive (long polling) before returning. An integer from 0 to 20 (seconds)

Type: `number`

Default: `0`

### [sqs1\_redrive\_policy](#input\_sqs1\_redrive\_policy)

Description: The JSON policy to set up the Dead Letter Queue, see AWS docs. Note: when specifying maxReceiveCount, you must specify it as an integer (5), and not a string ("5")

Type: `string`

Default: `""`

### [sqs1\_visibility\_timeout\_seconds](#input\_sqs1\_visibility\_timeout\_seconds)

Description: The visibility timeout for the queue. An integer from 0 to 43200 (12 hours)

Type: `number`

Default: `30`

### [sqs1\_dlq\_enabled](#input\_sqs1\_dlq\_enabled)

Description: Set to false to prevent the module from creating any sqs-dql resources

Type: `bool`

Default: `false`

### [sqs2\_enabled](#input\_sqs2\_enabled)

Description: Set to false to prevent the module from creating any sqs resources

Type: `bool`

Default: `false`

### [sqs2\_name\_override](#input\_sqs2\_name\_override)

Description: define sqs2\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [sqs2\_delay\_seconds](#input\_sqs2\_delay\_seconds)

Description: define sqs2\_delay\_seconds

Type: `number`

Default: `0`

### [sqs2\_fifo\_queue](#input\_sqs2\_fifo\_queue)

Description: Boolean designating a FIFO queue

Type: `bool`

Default: `false`

### [sqs2\_max\_message\_size](#input\_sqs2\_max\_message\_size)

Description: The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days)

Type: `number`

Default: `262144`

### [sqs2\_receive\_wait\_time\_seconds](#input\_sqs2\_receive\_wait\_time\_seconds)

Description: The time for which a ReceiveMessage call will wait for a message to arrive (long polling) before returning. An integer from 0 to 20 (seconds)

Type: `number`

Default: `0`

### [sqs2\_redrive\_policy](#input\_sqs2\_redrive\_policy)

Description: The JSON policy to set up the Dead Letter Queue, see AWS docs. Note: when specifying maxReceiveCount, you must specify it as an integer (5), and not a string ("5")

Type: `string`

Default: `""`

### [sqs2\_visibility\_timeout\_seconds](#input\_sqs2\_visibility\_timeout\_seconds)

Description: The visibility timeout for the queue. An integer from 0 to 43200 (12 hours)

Type: `number`

Default: `30`

### [sqs2\_dlq\_enabled](#input\_sqs2\_dlq\_enabled)

Description: Set to false to prevent the module from creating any sqs-dql resources

Type: `bool`

Default: `false`

### [sqs3\_enabled](#input\_sqs3\_enabled)

Description: Set to false to prevent the module from creating any sqs resources

Type: `bool`

Default: `false`

### [sqs3\_name\_override](#input\_sqs3\_name\_override)

Description: define sqs3\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [sqs3\_delay\_seconds](#input\_sqs3\_delay\_seconds)

Description: define sqs3\_delay\_seconds

Type: `number`

Default: `0`

### [sqs3\_fifo\_queue](#input\_sqs3\_fifo\_queue)

Description: Boolean designating a FIFO queue

Type: `bool`

Default: `false`

### [sqs3\_max\_message\_size](#input\_sqs3\_max\_message\_size)

Description: The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days)

Type: `number`

Default: `262144`

### [sqs3\_receive\_wait\_time\_seconds](#input\_sqs3\_receive\_wait\_time\_seconds)

Description: The time for which a ReceiveMessage call will wait for a message to arrive (long polling) before returning. An integer from 0 to 20 (seconds)

Type: `number`

Default: `0`

### [sqs3\_redrive\_policy](#input\_sqs3\_redrive\_policy)

Description: The JSON policy to set up the Dead Letter Queue, see AWS docs. Note: when specifying maxReceiveCount, you must specify it as an integer (5), and not a string ("5")

Type: `string`

Default: `""`

### [sqs3\_visibility\_timeout\_seconds](#input\_sqs3\_visibility\_timeout\_seconds)

Description: The visibility timeout for the queue. An integer from 0 to 43200 (12 hours)

Type: `number`

Default: `30`

### [sqs3\_dlq\_enabled](#input\_sqs3\_dlq\_enabled)

Description: Set to false to prevent the module from creating any sqs-dql resources

Type: `bool`

Default: `false`

### [sqs4\_enabled](#input\_sqs4\_enabled)

Description: Set to false to prevent the module from creating any sqs resources

Type: `bool`

Default: `false`

### [sqs4\_name\_override](#input\_sqs4\_name\_override)

Description: define sqs4\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [sqs4\_delay\_seconds](#input\_sqs4\_delay\_seconds)

Description: define sqs4\_delay\_seconds

Type: `number`

Default: `0`

### [sqs4\_fifo\_queue](#input\_sqs4\_fifo\_queue)

Description: Boolean designating a FIFO queue

Type: `bool`

Default: `false`

### [sqs4\_max\_message\_size](#input\_sqs4\_max\_message\_size)

Description: The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days)

Type: `number`

Default: `262144`

### [sqs4\_receive\_wait\_time\_seconds](#input\_sqs4\_receive\_wait\_time\_seconds)

Description: The time for which a ReceiveMessage call will wait for a message to arrive (long polling) before returning. An integer from 0 to 20 (seconds)

Type: `number`

Default: `0`

### [sqs4\_redrive\_policy](#input\_sqs4\_redrive\_policy)

Description: The JSON policy to set up the Dead Letter Queue, see AWS docs. Note: when specifying maxReceiveCount, you must specify it as an integer (5), and not a string ("5")

Type: `string`

Default: `""`

### [sqs4\_visibility\_timeout\_seconds](#input\_sqs4\_visibility\_timeout\_seconds)

Description: The visibility timeout for the queue. An integer from 0 to 43200 (12 hours)

Type: `number`

Default: `30`

### [sqs4\_dlq\_enabled](#input\_sqs4\_dlq\_enabled)

Description: Set to false to prevent the module from creating any sqs-dql resources

Type: `bool`

Default: `false`

### [sqs5\_enabled](#input\_sqs5\_enabled)

Description: Set to false to prevent the module from creating any sqs resources

Type: `bool`

Default: `false`

### [sqs5\_name\_override](#input\_sqs5\_name\_override)

Description: define sqs5\_name\_override to set a name differnt from var.name

Type: `string`

Default: `""`

### [sqs5\_delay\_seconds](#input\_sqs5\_delay\_seconds)

Description: define sqs5\_delay\_seconds

Type: `number`

Default: `0`

### [sqs5\_fifo\_queue](#input\_sqs5\_fifo\_queue)

Description: Boolean designating a FIFO queue

Type: `bool`

Default: `false`

### [sqs5\_max\_message\_size](#input\_sqs5\_max\_message\_size)

Description: The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days)

Type: `number`

Default: `262144`

### [sqs5\_receive\_wait\_time\_seconds](#input\_sqs5\_receive\_wait\_time\_seconds)

Description: The time for which a ReceiveMessage call will wait for a message to arrive (long polling) before returning. An integer from 0 to 20 (seconds)

Type: `number`

Default: `0`

### [sqs5\_redrive\_policy](#input\_sqs5\_redrive\_policy)

Description: The JSON policy to set up the Dead Letter Queue, see AWS docs. Note: when specifying maxReceiveCount, you must specify it as an integer (5), and not a string ("5")

Type: `string`

Default: `""`

### [sqs5\_visibility\_timeout\_seconds](#input\_sqs5\_visibility\_timeout\_seconds)

Description: The visibility timeout for the queue. An integer from 0 to 43200 (12 hours)

Type: `number`

Default: `30`

### [sqs5\_dlq\_enabled](#input\_sqs5\_dlq\_enabled)

Description: Set to false to prevent the module from creating any sqs-dql resources

Type: `bool`

Default: `false`

## Outputs

| Name | Description |
|------|-------------|
| [dynamodb2\_global\_secondary\_index\_names](#output\_dynamodb2\_global\_secondary\_index\_names) | DynamoDB secondary index names |
| [dynamodb2\_local\_secondary\_index\_names](#output\_dynamodb2\_local\_secondary\_index\_names) | DynamoDB local index names |
| [dynamodb2\_table\_arn](#output\_dynamodb2\_table\_arn) | DynamoDB table ARN |
| [dynamodb2\_table\_id](#output\_dynamodb2\_table\_id) | DynamoDB table ID |
| [dynamodb2\_table\_name](#output\_dynamodb2\_table\_name) | DynamoDB table name |
| [dynamodb2\_table\_stream\_arn](#output\_dynamodb2\_table\_stream\_arn) | DynamoDB table stream ARN |
| [dynamodb2\_table\_stream\_label](#output\_dynamodb2\_table\_stream\_label) | DynamoDB table stream label |
| [dynamodb3\_global\_secondary\_index\_names](#output\_dynamodb3\_global\_secondary\_index\_names) | DynamoDB secondary index names |
| [dynamodb3\_local\_secondary\_index\_names](#output\_dynamodb3\_local\_secondary\_index\_names) | DynamoDB local index names |
| [dynamodb3\_table\_arn](#output\_dynamodb3\_table\_arn) | DynamoDB table ARN |
| [dynamodb3\_table\_id](#output\_dynamodb3\_table\_id) | DynamoDB table ID |
| [dynamodb3\_table\_name](#output\_dynamodb3\_table\_name) | DynamoDB table name |
| [dynamodb3\_table\_stream\_arn](#output\_dynamodb3\_table\_stream\_arn) | DynamoDB table stream ARN |
| [dynamodb3\_table\_stream\_label](#output\_dynamodb3\_table\_stream\_label) | DynamoDB table stream label |
| [dynamodb4\_global\_secondary\_index\_names](#output\_dynamodb4\_global\_secondary\_index\_names) | DynamoDB secondary index names |
| [dynamodb4\_local\_secondary\_index\_names](#output\_dynamodb4\_local\_secondary\_index\_names) | DynamoDB local index names |
| [dynamodb4\_table\_arn](#output\_dynamodb4\_table\_arn) | DynamoDB table ARN |
| [dynamodb4\_table\_id](#output\_dynamodb4\_table\_id) | DynamoDB table ID |
| [dynamodb4\_table\_name](#output\_dynamodb4\_table\_name) | DynamoDB table name |
| [dynamodb4\_table\_stream\_arn](#output\_dynamodb4\_table\_stream\_arn) | DynamoDB table stream ARN |
| [dynamodb4\_table\_stream\_label](#output\_dynamodb4\_table\_stream\_label) | DynamoDB table stream label |
| [dynamodb\_global\_secondary\_index\_names](#output\_dynamodb\_global\_secondary\_index\_names) | DynamoDB secondary index names |
| [dynamodb\_local\_secondary\_index\_names](#output\_dynamodb\_local\_secondary\_index\_names) | DynamoDB local index names |
| [dynamodb\_table\_arn](#output\_dynamodb\_table\_arn) | DynamoDB table ARN |
| [dynamodb\_table\_id](#output\_dynamodb\_table\_id) | DynamoDB table ID |
| [dynamodb\_table\_name](#output\_dynamodb\_table\_name) | DynamoDB table name |
| [dynamodb\_table\_stream\_arn](#output\_dynamodb\_table\_stream\_arn) | DynamoDB table stream ARN |
| [dynamodb\_table\_stream\_label](#output\_dynamodb\_table\_stream\_label) | DynamoDB table stream label |
| [private\_rds\_endpoint\_aws\_route53\_record](#output\_private\_rds\_endpoint\_aws\_route53\_record) | Private Redis cluster end-point address (should be used by the service) |
| [private\_redis\_endpoint\_aws\_route53\_record](#output\_private\_redis\_endpoint\_aws\_route53\_record) | Private Redis cluster end-point address (should be used by the service) |
| [public\_rds\_endpoint\_aws\_route53\_record](#output\_public\_rds\_endpoint\_aws\_route53\_record) | Public Redis cluster end-point address (should be used by the service) |
| [public\_redis\_endpoint\_aws\_route53\_record](#output\_public\_redis\_endpoint\_aws\_route53\_record) | Public Redis cluster end-point address (should be used by the service) |
| [rds\_this\_db\_instance\_address](#output\_rds\_this\_db\_instance\_address) | The address of the RDS instance |
| [rds\_this\_db\_instance\_arn](#output\_rds\_this\_db\_instance\_arn) | The ARN of the RDS instance |
| [rds\_this\_db\_instance\_availability\_zone](#output\_rds\_this\_db\_instance\_availability\_zone) | The availability zone of the RDS instance |
| [rds\_this\_db\_instance\_endpoint](#output\_rds\_this\_db\_instance\_endpoint) | The connection endpoint |
| [rds\_this\_db\_instance\_hosted\_zone\_id](#output\_rds\_this\_db\_instance\_hosted\_zone\_id) | The canonical hosted zone ID of the DB instance (to be used in a Route 53 Alias record) |
| [rds\_this\_db\_instance\_identifier](#output\_rds\_this\_db\_instance\_identifier) | The RDS instance Identifier |
| [rds\_this\_db\_instance\_name](#output\_rds\_this\_db\_instance\_name) | The database name |
| [rds\_this\_db\_instance\_password](#output\_rds\_this\_db\_instance\_password) | The database password (this password may be old, because Terraform doesn't track it after initial creation) |
| [rds\_this\_db\_instance\_port](#output\_rds\_this\_db\_instance\_port) | The database port |
| [rds\_this\_db\_instance\_resource\_id](#output\_rds\_this\_db\_instance\_resource\_id) | The RDS Resource ID of this instance |
| [rds\_this\_db\_instance\_status](#output\_rds\_this\_db\_instance\_status) | The RDS instance status |
| [rds\_this\_db\_instance\_username](#output\_rds\_this\_db\_instance\_username) | The master username for the database |
| [rds\_this\_db\_parameter\_group\_arn](#output\_rds\_this\_db\_parameter\_group\_arn) | The ARN of the db parameter group |
| [rds\_this\_db\_parameter\_group\_id](#output\_rds\_this\_db\_parameter\_group\_id) | The db parameter group id |
| [rds\_this\_db\_subnet\_group\_arn](#output\_rds\_this\_db\_subnet\_group\_arn) | The ARN of the db subnet group |
| [rds\_this\_db\_subnet\_group\_id](#output\_rds\_this\_db\_subnet\_group\_id) | The db subnet group name |
| [redis\_port](#output\_redis\_port) | Redis port |
| [sqs1\_dlq\_queue\_arn](#output\_sqs1\_dlq\_queue\_arn) | SQS queue ARN |
| [sqs1\_queue\_arn](#output\_sqs1\_queue\_arn) | SQS queue ARN |
| [sqs1\_queue\_id](#output\_sqs1\_queue\_id) | SQS queue ID |
| [sqs1\_queue\_name](#output\_sqs1\_queue\_name) | SQS queue name |
| [sqs2\_dlq\_queue\_arn](#output\_sqs2\_dlq\_queue\_arn) | SQS queue ARN |
| [sqs2\_queue\_arn](#output\_sqs2\_queue\_arn) | SQS queue ARN |
| [sqs2\_queue\_id](#output\_sqs2\_queue\_id) | SQS queue ID |
| [sqs2\_queue\_name](#output\_sqs2\_queue\_name) | SQS queue name |
| [sqs3\_dlq\_queue\_arn](#output\_sqs3\_dlq\_queue\_arn) | SQS queue ARN |
| [sqs3\_queue\_arn](#output\_sqs3\_queue\_arn) | SQS queue ARN |
| [sqs3\_queue\_id](#output\_sqs3\_queue\_id) | SQS queue ID |
| [sqs3\_queue\_name](#output\_sqs3\_queue\_name) | SQS queue name |
| [sqs4\_dlq\_queue\_arn](#output\_sqs4\_dlq\_queue\_arn) | SQS queue ARN |
| [sqs4\_queue\_arn](#output\_sqs4\_queue\_arn) | SQS queue ARN |
| [sqs4\_queue\_id](#output\_sqs4\_queue\_id) | SQS queue ID |
| [sqs4\_queue\_name](#output\_sqs4\_queue\_name) | SQS queue name |
| [sqs5\_dlq\_queue\_arn](#output\_sqs5\_dlq\_queue\_arn) | SQS queue ARN |
| [sqs5\_queue\_arn](#output\_sqs5\_queue\_arn) | SQS queue ARN |
| [sqs5\_queue\_id](#output\_sqs5\_queue\_id) | SQS queue ID |
| [sqs5\_queue\_name](#output\_sqs5\_queue\_name) | SQS queue name |
| [this\_aws\_iam\_access\_key](#output\_this\_aws\_iam\_access\_key) | IAM Access Key of the created user |
| [this\_aws\_iam\_access\_key\_secret](#output\_this\_aws\_iam\_access\_key\_secret) | The secret key of the user |
| [this\_aws\_s3\_bucket\_arn](#output\_this\_aws\_s3\_bucket\_arn) | id of created S3 bucket |
| [this\_aws\_s3\_bucket\_id](#output\_this\_aws\_s3\_bucket\_id) | id of created S3 bucket |
| [this\_iam\_role\_arn](#output\_this\_iam\_role\_arn) | iam role arn |
| [this\_iam\_role\_name](#output\_this\_iam\_role\_name) | iam role name |
| [this\_redis\_replication\_group\_id](#output\_this\_redis\_replication\_group\_id) | The AWS Elasticache replication group ID |
| [this\_redis\_replication\_group\_number\_cache\_clusters](#output\_this\_redis\_replication\_group\_number\_cache\_clusters) | The AWS Elasticache replication group number cache clusters |
| [this\_redis\_replication\_group\_replication\_group\_id](#output\_this\_redis\_replication\_group\_replication\_group\_id) | The AWS Elasticache replication group replication group ID |
| [this\_redis\_subnet\_group\_id](#output\_this\_redis\_subnet\_group\_id) | The AWS elasticache subnet group ID |
| [this\_redis\_subnet\_group\_name](#output\_this\_redis\_subnet\_group\_name) | The AWS elasticache subnet group name |
| [this\_user\_arn](#output\_this\_user\_arn) | ARN of the IAM user |
| [this\_user\_name](#output\_this\_user\_name) | IAM user name |

## License

[MIT](LICENSE)

Copyright (c) 2019-2022 [Flaconi GmbH](https://github.com/Flaconi)