@@ -31,7 +31,7 @@ resource "aws_ecs_task_definition" "ecs_task" {
3131 requires_compatibilities = [local . aws_ecs_task_type [count . index ]]
3232 cpu = local. aws_ecs_task_cpu [count . index ]
3333 memory = local. aws_ecs_task_mem [count . index ]
34- execution_role_arn = data . aws_iam_role . ecsTaskExecutionRole . arn
34+ execution_role_arn = local . ecsTaskExecutionRole
3535 container_definitions = sensitive (jsonencode ([
3636 {
3737 " image" : local.aws_ecs_app_image[count.index],
@@ -69,7 +69,7 @@ resource "aws_ecs_task_definition" "ecs_task_from_json" {
6969 requires_compatibilities = [" ${ local . aws_ecs_task_type [count . index + length (local. aws_ecs_app_image )]} " ]
7070 cpu = local. aws_ecs_task_cpu [count . index + length (local. aws_ecs_app_image )]
7171 memory = local. aws_ecs_task_mem [count . index + length (local. aws_ecs_app_image )]
72- execution_role_arn = data . aws_iam_role . ecsTaskExecutionRole . arn
72+ execution_role_arn = local . ecsTaskExecutionRole
7373 container_definitions = sensitive (file (" ../../ansible/clone_repo/app/${ var . app_repo_name } /${ local . aws_ecs_task_json_definition_file [count . index ]} " ))
7474}
7575
@@ -111,7 +111,35 @@ resource "aws_cloudwatch_log_group" "ecs_cw_log_group" {
111111}
112112
113113# IAM
114-
115114data "aws_iam_role" "ecsTaskExecutionRole" {
115+ count = var. aws_ecs_task_execution_role != " " ? 1 : 0
116116 name = var. aws_ecs_task_execution_role
117+ }
118+
119+ resource "aws_iam_role" "ecsTaskExecutionRole" {
120+ count = var. aws_ecs_task_execution_role != " " ? 0 : 1
121+ name = " ${ var . aws_resource_identifier } -ecs"
122+ assume_role_policy = jsonencode ({
123+ " Version" : " 2012-10-17" ,
124+ " Statement" : [
125+ {
126+ " Effect" : " Allow" ,
127+ " Principal" : {
128+ " Service" : " ecs-tasks.amazonaws.com"
129+ },
130+ " Action" : " sts:AssumeRole"
131+ }
132+ ]
133+ })
134+ }
135+
136+ resource "aws_iam_policy_attachment" "ecsTaskExecutionRolePolicy" {
137+ count = var. aws_ecs_task_execution_role != " " ? 0 : 1
138+ name = " AmazonECSTaskExecutionRolePolicyAttachment"
139+ roles = [aws_iam_role . ecsTaskExecutionRole [0 ]. name ]
140+ policy_arn = " arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
141+ }
142+
143+ locals {
144+ ecsTaskExecutionRole = var. aws_ecs_task_execution_role != " " ? data. aws_iam_role . ecsTaskExecutionRole [0 ]. arn : aws_iam_role. ecsTaskExecutionRole [0 ]. arn
117145}
0 commit comments