123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- ###
- # IAM Role setups
- ###
- # IAM role for EMR Service
- resource "aws_iam_role" "iam_emr_service_role" {
- name_prefix = local.unique_id
- assume_role_policy = <<EOF
- {
- "Version": "2008-10-17",
- "Statement": [
- {
- "Sid": "",
- "Effect": "Allow",
- "Principal": {
- "Service": "elasticmapreduce.amazonaws.com"
- },
- "Action": "sts:AssumeRole"
- }
- ]
- }
- EOF
- }
- data "aws_iam_policy_document" "iam_emr_service_policy" {
- statement {
- sid = ""
- effect = "Allow"
- resources = ["*"]
- actions = [
- "ec2:AuthorizeSecurityGroupEgress",
- "ec2:AuthorizeSecurityGroupIngress",
- "ec2:CancelSpotInstanceRequests",
- "ec2:CreateNetworkInterface",
- "ec2:CreateSecurityGroup",
- "ec2:CreateTags",
- "ec2:DeleteNetworkInterface",
- "ec2:DeleteSecurityGroup",
- "ec2:DeleteTags",
- "ec2:DescribeAvailabilityZones",
- "ec2:DescribeAccountAttributes",
- "ec2:DescribeDhcpOptions",
- "ec2:DescribeInstanceStatus",
- "ec2:DescribeInstances",
- "ec2:DescribeKeyPairs",
- "ec2:DescribeNetworkAcls",
- "ec2:DescribeNetworkInterfaces",
- "ec2:DescribePrefixLists",
- "ec2:DescribeRouteTables",
- "ec2:DescribeSecurityGroups",
- "ec2:DescribeSpotInstanceRequests",
- "ec2:DescribeSpotPriceHistory",
- "ec2:DescribeSubnets",
- "ec2:DescribeVpcAttribute",
- "ec2:DescribeVpcEndpoints",
- "ec2:DescribeVpcEndpointServices",
- "ec2:DescribeVpcs",
- "ec2:DetachNetworkInterface",
- "ec2:ModifyImageAttribute",
- "ec2:ModifyInstanceAttribute",
- "ec2:RequestSpotInstances",
- "ec2:RevokeSecurityGroupEgress",
- "ec2:RunInstances",
- "ec2:TerminateInstances",
- "ec2:DeleteVolume",
- "ec2:DescribeVolumeStatus",
- "ec2:DescribeVolumes",
- "ec2:DetachVolume",
- "iam:GetRole",
- "iam:GetRolePolicy",
- "iam:ListInstanceProfiles",
- "iam:ListRolePolicies",
- "iam:PassRole",
- "s3:*",
- "sdb:BatchPutAttributes",
- "sdb:Select",
- "sqs:CreateQueue",
- "sqs:Delete*",
- "sqs:GetQueue*",
- "sqs:PurgeQueue",
- "sqs:ReceiveMessage",
- ]
- }
- }
- resource "aws_iam_role_policy" "iam_emr_service_policy" {
- name_prefix = local.unique_id
- role = aws_iam_role.iam_emr_service_role.id
- policy = data.aws_iam_policy_document.iam_emr_service_policy.json
- }
- # IAM Role for EC2 Instance Profile
- resource "aws_iam_role" "iam_emr_profile_role" {
- name_prefix = local.unique_id
- assume_role_policy = <<EOF
- {
- "Version": "2008-10-17",
- "Statement": [
- {
- "Sid": "",
- "Effect": "Allow",
- "Principal": {
- "Service": "ec2.amazonaws.com"
- },
- "Action": "sts:AssumeRole"
- }
- ]
- }
- EOF
- }
- resource "aws_iam_instance_profile" "emr_profile" {
- name_prefix = local.unique_id
- role = aws_iam_role.iam_emr_profile_role.name
- }
- data "aws_iam_policy_document" "iam_emr_profile_policy" {
- statement {
- sid = ""
- effect = "Allow"
- resources = ["*"]
- actions = [
- "cloudwatch:*",
- "dynamodb:*",
- "ec2:Describe*",
- "elasticmapreduce:Describe*",
- "elasticmapreduce:ListBootstrapActions",
- "elasticmapreduce:ListClusters",
- "elasticmapreduce:ListInstanceGroups",
- "elasticmapreduce:ListInstances",
- "elasticmapreduce:ListSteps",
- "kinesis:CreateStream",
- "kinesis:DeleteStream",
- "kinesis:DescribeStream",
- "kinesis:GetRecords",
- "kinesis:GetShardIterator",
- "kinesis:MergeShards",
- "kinesis:PutRecord",
- "kinesis:SplitShard",
- "rds:Describe*",
- "s3:*",
- "sdb:*",
- "sns:*",
- "sqs:*",
- ]
- }
- }
- resource "aws_iam_role_policy" "iam_emr_profile_policy" {
- name_prefix = local.unique_id
- role = aws_iam_role.iam_emr_profile_role.id
- policy = data.aws_iam_policy_document.iam_emr_profile_policy.json
- }
|