mirror of
https://github.com/Sea-Haven-Industries/seahaven-ap.git
synced 2026-10-01 20:13:22 +00:00
107 lines
2.7 KiB
HCL
107 lines
2.7 KiB
HCL
data "aws_iam_policy_document" "ecs_assume" {
|
|
statement {
|
|
effect = "Allow"
|
|
actions = ["sts:AssumeRole"]
|
|
|
|
principals {
|
|
type = "Service"
|
|
identifiers = ["ecs-tasks.amazonaws.com"]
|
|
}
|
|
}
|
|
}
|
|
|
|
data "aws_iam_policy_document" "ecs_task" {
|
|
statement {
|
|
sid = "ReadProjectParameters"
|
|
effect = "Allow"
|
|
actions = ["ssm:GetParameter", "ssm:GetParameters"]
|
|
resources = ["arn:aws:ssm:${var.aws_region}:${local.account_id}:parameter${local.ssm_prefix}/*"]
|
|
}
|
|
|
|
statement {
|
|
sid = "ReadProjectSecrets"
|
|
effect = "Allow"
|
|
actions = ["secretsmanager:GetSecretValue"]
|
|
resources = ["arn:aws:secretsmanager:${var.aws_region}:${local.account_id}:secret:seahaven-ap/*"]
|
|
}
|
|
|
|
statement {
|
|
sid = "EcrAuth"
|
|
effect = "Allow"
|
|
actions = ["ecr:GetAuthorizationToken"]
|
|
resources = ["*"]
|
|
}
|
|
|
|
statement {
|
|
sid = "EcrPull"
|
|
effect = "Allow"
|
|
actions = [
|
|
"ecr:BatchCheckLayerAvailability",
|
|
"ecr:BatchGetImage",
|
|
"ecr:GetDownloadUrlForLayer",
|
|
]
|
|
resources = [aws_ecr_repository.api.arn]
|
|
}
|
|
|
|
statement {
|
|
sid = "TaskLogs"
|
|
effect = "Allow"
|
|
actions = [
|
|
"logs:CreateLogStream",
|
|
"logs:PutLogEvents",
|
|
"logs:CreateLogGroup",
|
|
]
|
|
resources = [
|
|
aws_cloudwatch_log_group.api.arn,
|
|
"${aws_cloudwatch_log_group.api.arn}:*",
|
|
]
|
|
}
|
|
|
|
statement {
|
|
sid = "DocumentsBucket"
|
|
effect = "Allow"
|
|
actions = [
|
|
"s3:ListBucket",
|
|
"s3:GetBucketLocation",
|
|
]
|
|
resources = [aws_s3_bucket.documents.arn]
|
|
}
|
|
|
|
statement {
|
|
sid = "DocumentsObjects"
|
|
effect = "Allow"
|
|
actions = [
|
|
"s3:GetObject",
|
|
"s3:PutObject",
|
|
"s3:DeleteObject",
|
|
"s3:AbortMultipartUpload",
|
|
"s3:ListMultipartUploadParts",
|
|
]
|
|
resources = ["${aws_s3_bucket.documents.arn}/*"]
|
|
}
|
|
}
|
|
|
|
resource "aws_iam_role" "ecs_execution" {
|
|
name = "${local.project}-ecs-exec"
|
|
path = "/tf-managed/"
|
|
assume_role_policy = data.aws_iam_policy_document.ecs_assume.json
|
|
permissions_boundary = data.aws_iam_policy.ecs_task_boundary.arn
|
|
}
|
|
|
|
resource "aws_iam_role_policy_attachment" "ecs_execution" {
|
|
role = aws_iam_role.ecs_execution.name
|
|
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
|
|
}
|
|
|
|
resource "aws_iam_role" "ecs_task" {
|
|
name = "${local.project}-ecs-task"
|
|
path = "/tf-managed/"
|
|
assume_role_policy = data.aws_iam_policy_document.ecs_assume.json
|
|
permissions_boundary = data.aws_iam_policy.ecs_task_boundary.arn
|
|
}
|
|
|
|
resource "aws_iam_role_policy" "ecs_task" {
|
|
name = "api-runtime"
|
|
role = aws_iam_role.ecs_task.id
|
|
policy = data.aws_iam_policy_document.ecs_task.json
|
|
}
|