Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,14 @@ No modules.
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_container_definitions"></a> [container\_definitions](#input\_container\_definitions) | Additional container definitions (sidecars) to use for the task. | `any` | `[]` | no |
| <a name="input_ephemeral_storage_size"></a> [ephemeral\_storage\_size](#input\_ephemeral\_storage\_size) | n/a | `number` | `null` | no |
| <a name="input_name"></a> [name](#input\_name) | ECS task definition name | `string` | n/a | yes |
| <a name="input_network_mode"></a> [network\_mode](#input\_network\_mode) | Docker networking mode to use for the containers in the task. The valid values are none, bridge, awsvpc, and host. | `string` | `"awsvpc"` | no |
| <a name="input_requires_compatibilities"></a> [requires\_compatibilities](#input\_requires\_compatibilities) | A set of launch types required by the task. The valid values are EC2 and FARGATE. | `list(string)` | <pre>[<br> "FARGATE"<br>]</pre> | no |
| <a name="input_requires_compatibilities"></a> [requires\_compatibilities](#input\_requires\_compatibilities) | A set of launch types required by the task. The valid values are EC2 and FARGATE. | `list(string)` | <pre>[<br/> "FARGATE"<br/>]</pre> | no |
| <a name="input_ssm_kms_alias"></a> [ssm\_kms\_alias](#input\_ssm\_kms\_alias) | SSM kms key alias | `string` | `"alias/aws/ssm"` | no |
| <a name="input_task_cpu"></a> [task\_cpu](#input\_task\_cpu) | ECS fargate task cpu | `number` | n/a | yes |
| <a name="input_task_memory"></a> [task\_memory](#input\_task\_memory) | ECS fargate task memory | `number` | n/a | yes |
| <a name="input_volumes"></a> [volumes](#input\_volumes) | A list of volume definitions. | <pre>list(object({<br/> name = string<br/> host_path = optional(string)<br/><br/> docker_volume_configuration = optional(object({<br/> autoprovision = optional(bool)<br/> driver = optional(string)<br/> driver_opts = optional(map(any))<br/> labels = optional(map(any))<br/> scope = optional(string)<br/> }))<br/><br/> efs_volume_configuration = optional(object({<br/> file_system_id = string<br/> root_directory = optional(string)<br/> transit_encryption = optional(string)<br/> transit_encryption_port = optional(number)<br/><br/> authorization_config = optional(object({<br/> access_point_id = string<br/> iam = optional(string)<br/> }))<br/> }))<br/> }))</pre> | `[]` | no |

## Outputs

Expand Down
47 changes: 46 additions & 1 deletion main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,49 @@ resource "aws_ecs_task_definition" "task" {
cpu = var.task_cpu
memory = var.task_memory
container_definitions = jsonencode(var.container_definitions)
}

ephemeral_storage {
size_in_gib = try(var.ephemeral_storage_size, null)
}
dynamic "volume" {
for_each = var.volumes

content {
name = volume.value.name
host_path = try(volume.value.host_path, null)

dynamic "docker_volume_configuration" {
for_each = volume.value.docker_volume_configuration != null ? [volume.value.docker_volume_configuration] : []

content {
autoprovision = docker_volume_configuration.value.autoprovision
driver = docker_volume_configuration.value.driver
driver_opts = docker_volume_configuration.value.driver_opts
labels = docker_volume_configuration.value.labels
scope = docker_volume_configuration.value.scope
}
}
dynamic "efs_volume_configuration" {
for_each = volume.value.efs_volume_configuration != null ? [volume.value.efs_volume_configuration] : []

content {
file_system_id = efs_volume_configuration.value.file_system_id
root_directory = efs_volume_configuration.value.root_directory
transit_encryption = efs_volume_configuration.value.transit_encryption
transit_encryption_port = efs_volume_configuration.value.transit_encryption_port

dynamic "authorization_config" {
for_each = efs_volume_configuration.value.authorization_config != null ? [
efs_volume_configuration.value.authorization_config
] : []

content {
access_point_id = authorization_config.value.access_point_id
iam = authorization_config.value.iam
}
}
}
}
}
}
}
34 changes: 34 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,38 @@ variable "container_definitions" {
description = "Additional container definitions (sidecars) to use for the task."
type = any
default = []
}

variable "volumes" {
description = "A list of volume definitions."
type = list(object({
name = string
host_path = optional(string)

docker_volume_configuration = optional(object({
autoprovision = optional(bool)
driver = optional(string)
driver_opts = optional(map(any))
labels = optional(map(any))
scope = optional(string)
}))

efs_volume_configuration = optional(object({
file_system_id = string
root_directory = optional(string)
transit_encryption = optional(string)
transit_encryption_port = optional(number)

authorization_config = optional(object({
access_point_id = string
iam = optional(string)
}))
}))
}))
default = []
}

variable "ephemeral_storage_size"{
type = number
default = null
}