# IAM role =================================================================== resource "aws_iam_role" "this" { name = var.name description = var.description path = var.path assume_role_policy = var.assume_role_policy max_session_duration = var.max_session_duration force_detach_policies = var.force_detach_policies permissions_boundary = var.permissions_boundary tags = local.tags } # Managed policy attachments ------------------------------------------------- resource "aws_iam_role_policy_attachment" "this" { for_each = toset(var.managed_policy_arns) role = aws_iam_role.this.name policy_arn = each.value } # Inline policies ------------------------------------------------------------ resource "aws_iam_role_policy" "this" { for_each = var.inline_policies name = each.key role = aws_iam_role.this.id policy = each.value } # Instance profile ----------------------------------------------------------- resource "aws_iam_instance_profile" "this" { for_each = var.instance_profile ? { profile = true } : {} name = local.instance_profile_name role = aws_iam_role.this.name tags = local.tags }