ECS task role 정의

hyuckhoon.ko·2021년 1월 9일
0

What I learned in first year

목록 보기
49/146

1. task-exec-role.json 정의

deploy 디레토리 내에 templates 디렉토리가 있다.
다시 ecs디렉토리를 생성한다.

ecs 디렉토리 내에 task-exec-role.json 파일을 생성한다.

deploy/templates/ecs/task-exec-role.json


  • task-exec-role.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

아마존 출처: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html


task-exec-role.json파일의 목적은
ecs 정책과 관련이 있다.

  • task가 ECR에서 도커 이미지를 다운받을 있는 권한을 부여한다.
  • 로그들을 log stream에 저장할 수 있도록 한다.
  • 새로운 log stream을 생성하게 한다.



2. assume-role-policy.json 정의

  • assume-role-policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Effect": "Allow"
    }
  ]
}



3. ecs.tf 파일 수정

resource "aws_ecs_cluster" "main" {
  name = "${local.prefix}-cluster"

  tags = local.common_tags
}

resource "aws_iam_policy" "task_execution_role_policy" {
  name        = "${local.prefix}-task-exec-role-policy"
  path        = "/"
  description = "Allow retrieving of images and adding logs"
  policy      = file("./templates/ecs/task-exec-role.json")
}

resource "aws_iam_role" "task_execution_role" {
  name               = "${local.prefix}-task-exec-role"
  assume_role_policy = file("./templates/ecs/assume-role-policy.json")

  tags = local.common_tags
}

resource "aws_iam_role_policy_attachment" "task_execution_role" {
  role       = aws_iam_role.task_execution_role.name
  policy_arn = aws_iam_policy.task_execution_role_policy.arn
}

resource "aws_iam_role" "app_iam_role" {
  name               = "${local.prefix}-api-task"
  assume_role_policy = file("./templates/ecs/assume-role-policy.json")

  tags = local.common_tags
}



0개의 댓글