diff --git a/main.tf b/main.tf index 9d37a4d..48efc55 100644 --- a/main.tf +++ b/main.tf @@ -130,6 +130,7 @@ module "service" { task_exec_iam_role_permissions_boundary = try(each.value.task_exec_iam_role_permissions_boundary, null) task_exec_iam_role_tags = try(each.value.task_exec_iam_role_tags, {}) task_exec_iam_role_policies = try(each.value.task_exec_iam_role_policies, {}) + task_exec_iam_role_max_session_duration = try(each.value.task_exec_iam_role_max_session_duration, null) # Task execution IAM role policy create_task_exec_policy = try(each.value.create_task_exec_policy, true) diff --git a/modules/service/README.md b/modules/service/README.md index cb730a2..2101fd3 100644 --- a/modules/service/README.md +++ b/modules/service/README.md @@ -296,6 +296,7 @@ module "ecs_service" { | [task\_definition\_placement\_constraints](#input\_task\_definition\_placement\_constraints) | Configuration block for rules that are taken into consideration during task placement (up to max of 10). This is set at the task definition, see `placement_constraints` for setting at the service | `any` | `{}` | no | | [task\_exec\_iam\_role\_arn](#input\_task\_exec\_iam\_role\_arn) | Existing IAM role ARN | `string` | `null` | no | | [task\_exec\_iam\_role\_description](#input\_task\_exec\_iam\_role\_description) | Description of the role | `string` | `null` | no | +| [task\_exec\_iam\_role\_max\_session\_duration](#input\_task\_exec\_iam\_role\_max\_session\_duration) | Maximum session duration (in seconds) for ECS task execution role. Default is 3600. | `number` | `null` | no | | [task\_exec\_iam\_role\_name](#input\_task\_exec\_iam\_role\_name) | Name to use on IAM role created | `string` | `null` | no | | [task\_exec\_iam\_role\_path](#input\_task\_exec\_iam\_role\_path) | IAM role path | `string` | `null` | no | | [task\_exec\_iam\_role\_permissions\_boundary](#input\_task\_exec\_iam\_role\_permissions\_boundary) | ARN of the policy that is used to set the permissions boundary for the IAM role | `string` | `null` | no | diff --git a/modules/service/main.tf b/modules/service/main.tf index 6b57b70..b244f7b 100644 --- a/modules/service/main.tf +++ b/modules/service/main.tf @@ -776,6 +776,7 @@ resource "aws_iam_role" "task_exec" { description = coalesce(var.task_exec_iam_role_description, "Task execution role for ${local.task_exec_iam_role_name}") assume_role_policy = data.aws_iam_policy_document.task_exec_assume[0].json + max_session_duration = var.task_exec_iam_role_max_session_duration permissions_boundary = var.task_exec_iam_role_permissions_boundary force_detach_policies = true diff --git a/modules/service/variables.tf b/modules/service/variables.tf index 2b639a7..1c542e1 100644 --- a/modules/service/variables.tf +++ b/modules/service/variables.tf @@ -438,6 +438,12 @@ variable "task_exec_iam_role_policies" { default = {} } +variable "task_exec_iam_role_max_session_duration" { + description = "Maximum session duration (in seconds) for ECS task execution role. Default is 3600." + type = number + default = null +} + variable "create_task_exec_policy" { description = "Determines whether the ECS task definition IAM policy should be created. This includes permissions included in AmazonECSTaskExecutionRolePolicy as well as access to secrets and SSM parameters" type = bool diff --git a/wrappers/service/main.tf b/wrappers/service/main.tf index bbb4caf..3dbd9e4 100644 --- a/wrappers/service/main.tf +++ b/wrappers/service/main.tf @@ -100,6 +100,7 @@ module "wrapper" { task_definition_placement_constraints = try(each.value.task_definition_placement_constraints, var.defaults.task_definition_placement_constraints, {}) task_exec_iam_role_arn = try(each.value.task_exec_iam_role_arn, var.defaults.task_exec_iam_role_arn, null) task_exec_iam_role_description = try(each.value.task_exec_iam_role_description, var.defaults.task_exec_iam_role_description, null) + task_exec_iam_role_max_session_duration = try(each.value.task_exec_iam_role_max_session_duration, var.defaults.task_exec_iam_role_max_session_duration, null) task_exec_iam_role_name = try(each.value.task_exec_iam_role_name, var.defaults.task_exec_iam_role_name, null) task_exec_iam_role_path = try(each.value.task_exec_iam_role_path, var.defaults.task_exec_iam_role_path, null) task_exec_iam_role_permissions_boundary = try(each.value.task_exec_iam_role_permissions_boundary, var.defaults.task_exec_iam_role_permissions_boundary, null)