-
Notifications
You must be signed in to change notification settings - Fork 0
/
iam.tf
71 lines (67 loc) · 2.04 KB
/
iam.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
data "aws_iam_role" "lambda_function_role" {
count = terraform.workspace == "default" ? 0 : 1
name = var.lambda_function_role_name
}
resource "aws_iam_role" "lambda_function_role" {
count = terraform.workspace == "default" ? 1 : 0
name = var.lambda_function_role_name
description = "Allow Lambda to tag resources"
tags = var.resource_tags
assume_role_policy = jsonencode(
{
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Sid = ""
Principal = {
Service = "lambda.amazonaws.com"
}
}
]
}
)
}
resource "aws_iam_role_policy_attachment" "lambda_basic_policy" {
count = terraform.workspace == "default" ? 1 : 0
role = aws_iam_role.lambda_function_role[count.index].name
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
}
resource "aws_iam_role_policy_attachment" "lambda_tagging_policy" {
count = terraform.workspace == "default" ? 1 : 0
role = aws_iam_role.lambda_function_role[count.index].name
policy_arn = aws_iam_policy.lambda_tagging_policy[count.index].arn
}
resource "aws_iam_policy" "lambda_tagging_policy" {
count = terraform.workspace == "default" ? 1 : 0
name = "AWSAutoTaggingFunctionPolicy"
description = "Allow Lambda to tag resources"
tags = var.resource_tags
policy = jsonencode(
{
"Version" : "2012-10-17",
"Statement" : [
{
"Sid" : "VisualEditor0",
"Effect" : "Allow",
"Action" : [
"ec2:*Tag*",
"ec2:DescribeImages",
"ec2:DescribeInstances",
"elasticloadbalancing:*Tag*",
"rds:*Tag*",
"cloudfront:*Tag*",
"cloudfront:GetDistribution*",
"cloudfront:UpdateDistribution",
"sns:*Tag*",
"lambda:*Tag*",
"iam:*Tag*",
"autoscaling:*Tag*",
],
"Resource" : "*"
}
]
}
)
}