@@ -17,8 +17,8 @@ resource "aws_ecs_task_definition" "hydroserver_worker" {
1717 network_mode = " awsvpc"
1818 cpu = " 1024" # 1 vCPU
1919 memory = " 2048" # 2 GB
20- execution_role_arn = aws_iam_role. app_runner_access_role . arn
21- task_role_arn = aws_iam_role. app_runner_service_role . arn
20+ execution_role_arn = aws_iam_role. ecs_worker_execution_role . arn
21+ task_role_arn = aws_iam_role. ecs_worker_task_role . arn
2222
2323 container_definitions = jsonencode ([
2424 {
@@ -85,4 +85,73 @@ resource "aws_ecs_service" "hydroserver_worker" {
8585
8686 deployment_minimum_healthy_percent = 100
8787 deployment_maximum_percent = 200
88- }
88+ }
89+
90+
91+ # ---------------------------------
92+ # ECS Task Role
93+ # ---------------------------------
94+
95+ resource "aws_iam_role" "ecs_worker_task_role" {
96+ name = " hydroserver-${ var . instance } -ecs-worker-role"
97+
98+ assume_role_policy = jsonencode ({
99+ Version = " 2012-10-17"
100+ Statement = [{
101+ Effect = " Allow"
102+ Action = " sts:AssumeRole"
103+ Principal = {
104+ Service = " ecs-tasks.amazonaws.com"
105+ }
106+ }]
107+ })
108+ }
109+
110+ resource "aws_iam_policy_attachment" "ecs_worker_role_ssm" {
111+ name = " hydroserver-${ var . instance } -ecs-ssm-attachment"
112+ roles = [aws_iam_role . ecs_worker_task_role . name ]
113+ policy_arn = aws_iam_policy. app_runner_ssm_policy . arn
114+ }
115+
116+ resource "aws_iam_policy_attachment" "ecs_worker_task_role_s3" {
117+ name = " hydroserver-${ var . instance } -ecs-s3-attachment"
118+ roles = [aws_iam_role . ecs_worker_task_role . name ]
119+ policy_arn = aws_iam_policy. app_runner_s3_policy . arn
120+ }
121+
122+ resource "aws_iam_policy_attachment" "ecs_worker_task_role_rds" {
123+ name = " hydroserver-${ var . instance } -ecs-worker-rds-attachment"
124+ roles = [aws_iam_role . ecs_worker_task_role . name ]
125+ policy_arn = aws_iam_policy. app_runner_rds_policy [0 ]. arn
126+ }
127+
128+ # ---------------------------------
129+ # ECS Execution Role
130+ # ---------------------------------
131+
132+ resource "aws_iam_role" "ecs_worker_execution_role" {
133+ name = " hydroserver-${ var . instance } -ecs-worker-execution-role"
134+
135+ assume_role_policy = jsonencode ({
136+ Version = " 2012-10-17"
137+ Statement = [{
138+ Effect = " Allow"
139+ Action = " sts:AssumeRole"
140+ Principal = {
141+ Service = " ecs-tasks.amazonaws.com"
142+ }
143+ }]
144+ })
145+ }
146+
147+ resource "aws_iam_policy_attachment" "ecs_worker_execution_ecr" {
148+ name = " hydroserver-${ var . instance } -ecs-worker-ecr-attachment"
149+ roles = [aws_iam_role . ecs_worker_execution_role . name ]
150+ policy_arn = aws_iam_policy. app_runner_ecr_access_policy . arn
151+ }
152+
153+ resource "aws_iam_policy_attachment" "ecs_worker_execution_logs" {
154+ name = " hydroserver-${ var . instance } -ecs-worker-logs-attachment"
155+ roles = [aws_iam_role . ecs_worker_execution_role . name ]
156+ policy_arn = " arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
157+ }
0 commit comments