1+ AWSTemplateFormatVersion : " 2010-09-09"
2+ Description : " Template to build a CodeBuild Project, assumes that GitHub credentials are already set up."
3+
4+ Resources :
5+ CodeBuildProject :
6+ Type : " AWS::CodeBuild::Project"
7+ Properties :
8+ Name : !Ref ProjectName
9+ Description : " CI for the Java ESDK private staging repo"
10+ Source :
11+ Location : " https://github.com/aws/private-aws-encryption-sdk-java-staging.git"
12+ GitCloneDepth : 1
13+ GitSubmodulesConfig :
14+ FetchSubmodules : true
15+ InsecureSsl : false
16+ ReportBuildStatus : false
17+ Type : " GITHUB"
18+ Artifacts :
19+ Type : " NO_ARTIFACTS"
20+ Cache :
21+ Type : " NO_CACHE"
22+ Environment :
23+ ComputeType : " BUILD_GENERAL1_SMALL"
24+ Image : " aws/codebuild/standard:5.0"
25+ ImagePullCredentialsType : " CODEBUILD"
26+ PrivilegedMode : false
27+ Type : " LINUX_CONTAINER"
28+ ServiceRole : !GetAtt CodeBuildServiceRole.Arn
29+ TimeoutInMinutes : 60
30+ QueuedTimeoutInMinutes : 480
31+ EncryptionKey : !Sub "arn:aws:kms:${AWS::Region}:${AWS::AccountId}:alias/aws/s3"
32+ BadgeEnabled : false
33+ BuildBatchConfig :
34+ ServiceRole : !GetAtt CodeBuildServiceRole.Arn
35+ Restrictions :
36+ MaximumBuildsAllowed : 4
37+ ComputeTypesAllowed :
38+ - BUILD_GENERAL1_SMALL
39+ - BUILD_GENERAL1_MEDIUM
40+ TimeoutInMins : 480
41+ LogsConfig :
42+ CloudWatchLogs :
43+ Status : " ENABLED"
44+ S3Logs :
45+ Status : " DISABLED"
46+ EncryptionDisabled : false
47+
48+ CodeBuildServiceRole :
49+ Type : " AWS::IAM::Role"
50+ Properties :
51+ Path : " /service-role/"
52+ RoleName : !Sub "codebuild-private-java-esdk-service-role"
53+ AssumeRolePolicyDocument : " {\" Version\" :\" 2012-10-17\" ,\" Statement\" :[{\" Effect\" :\" Allow\" ,\" Principal\" :{\" Service\" :\" codebuild.amazonaws.com\" },\" Action\" :\" sts:AssumeRole\" },{\" Effect\" :\" Allow\" ,\" Principal\" :{\" Federated\" :\" arn:aws:iam::587316601012:oidc-provider/token.actions.githubusercontent.com\" },\" Action\" :\" sts:AssumeRoleWithWebIdentity\" ,\" Condition\" :{\" StringEquals\" :{\" token.actions.githubusercontent.com:aud\" :\" sts.amazonaws.com\" },\" StringLike\" :{\" token.actions.githubusercontent.com:sub\" :\" repo:aws/private-aws-encryption-sdk-java-staging:*\" }}}]}"
54+ MaxSessionDuration : 3600
55+ ManagedPolicyArns :
56+ - !Ref CryptoToolsKMS
57+ - !Ref CodeBuildBatchPolicy
58+ - !Ref CodeBuildBasePolicy
59+
60+ CodeBuildBatchPolicy :
61+ Type : " AWS::IAM::ManagedPolicy"
62+ Properties :
63+ ManagedPolicyName : !Sub "CodeBuildBuildBatchPolicy-private-java-esdk-${AWS::Region}-codebuild-private-java-esdk-service-role"
64+ Path : " /service-role/"
65+ PolicyDocument : !Sub |
66+ {
67+ "Version": "2012-10-17",
68+ "Statement": [
69+ {
70+ "Effect": "Allow",
71+ "Resource": [
72+ "arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/private-java-esdk"
73+ ],
74+ "Action": [
75+ "codebuild:StartBuild",
76+ "codebuild:StopBuild",
77+ "codebuild:RetryBuild",
78+ "codebuild:BatchGetBuilds"
79+ ]
80+ }
81+ ]
82+ }
83+
84+ CodeBuildBasePolicy :
85+ Type : " AWS::IAM::ManagedPolicy"
86+ Properties :
87+ ManagedPolicyName : !Sub "CodeBuildBasePolicy-private-java-esdk-${AWS::Region}"
88+ Path : " /service-role/"
89+ PolicyDocument : !Sub |
90+ {
91+ "Version": "2012-10-17",
92+ "Statement": [
93+ {
94+ "Effect": "Allow",
95+ "Resource": [
96+ "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/private-java-esdk",
97+ "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/private-java-esdk:*"
98+ ],
99+ "Action": [
100+ "logs:CreateLogGroup",
101+ "logs:CreateLogStream",
102+ "logs:PutLogEvents",
103+ "logs:GetLogEvents"
104+ ]
105+ },
106+ {
107+ "Effect": "Allow",
108+ "Resource": [
109+ "arn:aws:s3:::codepipeline-${AWS::Region}-*"
110+ ],
111+ "Action": [
112+ "s3:PutObject",
113+ "s3:GetObject",
114+ "s3:GetObjectVersion",
115+ "s3:GetBucketAcl",
116+ "s3:GetBucketLocation"
117+ ]
118+ },
119+ {
120+ "Effect": "Allow",
121+ "Action": [
122+ "codebuild:CreateReportGroup",
123+ "codebuild:CreateReport",
124+ "codebuild:UpdateReport",
125+ "codebuild:BatchPutTestCases",
126+ "codebuild:BatchPutCodeCoverages"
127+ ],
128+ "Resource": [
129+ "arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:report-group/private-java-esdk-*"
130+ ]
131+ }
132+ ]
133+ }
134+
135+ # There exist public AWS KMS CMKs that are used for testing
136+ # Take care with these CMKs they are **ONLY** for testing!!!
137+ CryptoToolsKMS :
138+ Type : " AWS::IAM::ManagedPolicy"
139+ Properties :
140+ ManagedPolicyName : !Sub "CrypotToolsKMSPolicy-private-java-esdk-${AWS::Region}-codebuild-private-java-esdk-service-role"
141+ Path : " /service-role/"
142+ PolicyDocument : !Sub |
143+ {
144+ "Version": "2012-10-17",
145+ "Statement": [
146+ {
147+ "Effect": "Allow",
148+ "Resource": [
149+ "arn:aws:kms:*:658956600833:key/*",
150+ "arn:aws:kms:*:658956600833:alias/*",
151+ "arn:aws:kms:*:370957321024:key/*",
152+ "arn:aws:kms:*:370957321024:alias/*"
153+ ],
154+ "Action": [
155+ "kms:Encrypt",
156+ "kms:Decrypt",
157+ "kms:GenerateDataKey",
158+ "kms:GenerateDataKeyWithoutPlaintext",
159+ "kms:ReEncrypt"
160+ ]
161+ }
162+ ]
163+ }
0 commit comments