1
1
locals {
2
- principals_readonly_access_count = " ${ length (var. principals_readonly_access )} "
3
2
principals_readonly_access_non_empty = " ${ signum (length (var. principals_readonly_access ))} "
4
- principals_readonly_access_empty = " ${ signum (length (var. principals_readonly_access )) == 0 ? 1 : 0 } "
5
-
6
- principals_full_access_count = " ${ length (var. principals_full_access )} "
7
- principals_full_access_non_empty = " ${ signum (length (var. principals_full_access ))} "
8
- principals_full_access_empty = " ${ signum (length (var. principals_full_access )) == 0 ? 1 : 0 } "
9
-
10
- principals_total_count = " ${ length (var. principals_readonly_access ) + length (var. principals_full_access )} "
11
- principals_total_non_empty = " ${ signum (length (var. principals_readonly_access ) + length (var. principals_full_access ))} "
12
- principals_total_empty = " ${ signum (length (var. principals_readonly_access ) + length (var. principals_full_access )) == 0 ? 1 : 0 } "
3
+ principals_full_access_non_empty = " ${ signum (length (var. principals_full_access ))} "
4
+ ecr_need_policy = " ${ length (var. principals_full_access ) + length (var. principals_readonly_access ) > 0 ? " true" : " false" } "
13
5
}
14
6
15
7
module "label" {
16
8
source = " git::https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.3.3"
9
+ enabled = " ${ var . enabled } "
17
10
namespace = " ${ var . namespace } "
18
11
stage = " ${ var . stage } "
19
12
name = " ${ var . name } "
@@ -23,10 +16,12 @@ module "label" {
23
16
}
24
17
25
18
resource "aws_ecr_repository" "default" {
26
- name = " ${ var . use_fullname == " true" ? module . label . id : module . label . name } "
19
+ count = " ${ var . enabled == " true" ? 1 : 0 } "
20
+ name = " ${ var . use_fullname == " true" ? module . label . id : module . label . name } "
27
21
}
28
22
29
23
resource "aws_ecr_lifecycle_policy" "default" {
24
+ count = " ${ var . enabled == " true" ? 1 : 0 } "
30
25
repository = " ${ aws_ecr_repository . default . name } "
31
26
32
27
policy = << EOF
@@ -48,77 +43,6 @@ resource "aws_ecr_lifecycle_policy" "default" {
48
43
EOF
49
44
}
50
45
51
- # # If roles are empty
52
- # # Create default role to provide full access.
53
- # # The role can be attached or assumed
54
-
55
- data "aws_iam_policy_document" "assume_role" {
56
- count = " ${ local . principals_total_empty } "
57
-
58
- statement {
59
- sid = " EC2AssumeRole"
60
- effect = " Allow"
61
- actions = [" sts:AssumeRole" ]
62
-
63
- principals = {
64
- type = " Service"
65
- identifiers = [" ec2.amazonaws.com" ]
66
- }
67
- }
68
- }
69
-
70
- resource "aws_iam_role" "default" {
71
- count = " ${ local . principals_total_empty } "
72
- name = " ${ module . label . id } "
73
- assume_role_policy = " ${ data . aws_iam_policy_document . assume_role . json } "
74
- }
75
-
76
- resource "aws_iam_instance_profile" "default" {
77
- count = " ${ local . principals_total_empty } "
78
- name = " ${ module . label . id } "
79
- role = " ${ aws_iam_role . default . name } "
80
- }
81
-
82
- # # Grant access to default role
83
- data "aws_iam_policy_document" "default_ecr" {
84
- count = " ${ local . principals_total_empty } "
85
-
86
- statement {
87
- sid = " ECR"
88
- effect = " Allow"
89
-
90
- principals = {
91
- type = " AWS"
92
-
93
- identifiers = [
94
- " ${ aws_iam_role . default . arn } " ,
95
- ]
96
- }
97
-
98
- actions = [
99
- " ecr:GetDownloadUrlForLayer" ,
100
- " ecr:BatchGetImage" ,
101
- " ecr:BatchCheckLayerAvailability" ,
102
- " ecr:PutImage" ,
103
- " ecr:InitiateLayerUpload" ,
104
- " ecr:UploadLayerPart" ,
105
- " ecr:CompleteLayerUpload" ,
106
- " ecr:DescribeRepositories" ,
107
- " ecr:ListImages" ,
108
- " ecr:DescribeImages" ,
109
- ]
110
- }
111
- }
112
-
113
- resource "aws_ecr_repository_policy" "default_ecr" {
114
- count = " ${ local . principals_total_empty } "
115
- repository = " ${ aws_ecr_repository . default . name } "
116
- policy = " ${ data . aws_iam_policy_document . default_ecr . json } "
117
- }
118
-
119
- # # If any roles provided
120
- # # Grant access to them
121
-
122
46
data "aws_iam_policy_document" "empty" {}
123
47
124
48
data "aws_iam_policy_document" "resource_readonly_access" {
@@ -178,14 +102,13 @@ data "aws_iam_policy_document" "resource_full_access" {
178
102
}
179
103
180
104
data "aws_iam_policy_document" "resource" {
181
- count = " ${ local . principals_total_non_empty } "
182
-
183
105
source_json = " ${ local . principals_readonly_access_non_empty ? data . aws_iam_policy_document . resource_readonly_access . json : data . aws_iam_policy_document . empty . json } "
184
106
override_json = " ${ local . principals_full_access_non_empty ? data . aws_iam_policy_document . resource_full_access . json : data . aws_iam_policy_document . empty . json } "
107
+ " statement" = []
185
108
}
186
109
187
110
resource "aws_ecr_repository_policy" "default" {
188
- count = " ${ local . principals_total_non_empty } "
111
+ count = " ${ ( local. ecr_need_policy == " true " && var . enabled == " true " ) ? 1 : 0 } "
189
112
repository = " ${ aws_ecr_repository . default . name } "
190
113
policy = " ${ data . aws_iam_policy_document . resource . json } "
191
114
}
0 commit comments