-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.yaml
156 lines (154 loc) · 5.07 KB
/
template.yaml
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
Parameters:
ECRRepositoryTag:
Type: String
Description: ECR repository URI
Resources:
TransactionIngestion:
Type: AWS::Kinesis::Stream
Properties:
StreamEncryption:
EncryptionType: KMS
KeyId: alias/aws/kinesis
StreamModeDetails:
StreamMode: ON_DEMAND
validData:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub ${AWS::StackName}-validdata-${AWS::AccountId}
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: aws:kms
KMSMasterKeyID: alias/aws/s3
PublicAccessBlockConfiguration:
IgnorePublicAcls: true
RestrictPublicBuckets: true
validDataBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref validData
PolicyDocument:
Id: RequireEncryptionInTransit
Version: '2012-10-17'
Statement:
- Principal: '*'
Action: '*'
Effect: Deny
Resource:
- !GetAtt validData.Arn
- !Sub ${validData.Arn}/*
Condition:
Bool:
aws:SecureTransport: 'false'
validateData:
Type: AWS::Serverless::Function
Properties:
Description: !Sub
- Stack ${AWS::StackName} Function ${ResourceName}
- ResourceName: validateData
MemorySize: 3008
Timeout: 30
Tracing: Active
Events:
TransactionIngestion:
Type: Kinesis
Properties:
Stream: !GetAtt TransactionIngestion.Arn
StartingPosition: TRIM_HORIZON
BatchSize: 1
PackageType: Image
Environment:
Variables:
VALIDDATA_BUCKET_NAME: !Ref validData
VALIDDATA_BUCKET_ARN: !GetAtt validData.Arn
INVALIDDATA_BUCKET_NAME: !Ref InvalidData
INVALIDDATA_BUCKET_ARN: !GetAtt InvalidData.Arn
Policies:
- Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectAcl
- s3:GetObjectLegalHold
- s3:GetObjectRetention
- s3:GetObjectTorrent
- s3:GetObjectVersion
- s3:GetObjectVersionAcl
- s3:GetObjectVersionForReplication
- s3:GetObjectVersionTorrent
- s3:ListBucket
- s3:ListBucketMultipartUploads
- s3:ListBucketVersions
- s3:ListMultipartUploadParts
- s3:AbortMultipartUpload
- s3:DeleteObject
- s3:DeleteObjectVersion
- s3:PutObject
- s3:PutObjectLegalHold
- s3:PutObjectRetention
- s3:RestoreObject
Resource:
- !Sub arn:${AWS::Partition}:s3:::${validData}
- !Sub arn:${AWS::Partition}:s3:::${validData}/*
- Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectAcl
- s3:GetObjectLegalHold
- s3:GetObjectRetention
- s3:GetObjectTorrent
- s3:GetObjectVersion
- s3:GetObjectVersionAcl
- s3:GetObjectVersionForReplication
- s3:GetObjectVersionTorrent
- s3:ListBucket
- s3:ListBucketMultipartUploads
- s3:ListBucketVersions
- s3:ListMultipartUploadParts
- s3:AbortMultipartUpload
- s3:DeleteObject
- s3:DeleteObjectVersion
- s3:PutObject
- s3:PutObjectLegalHold
- s3:PutObjectRetention
- s3:RestoreObject
Resource:
- !Sub arn:${AWS::Partition}:s3:::${InvalidData}
- !Sub arn:${AWS::Partition}:s3:::${InvalidData}/*
ImageUri: !Sub 294331937131.dkr.ecr.ca-central-1.amazonaws.com/fraud-detection/validation-lambda:${ECRRepositoryTag}
validateDataLogGroup:
Type: AWS::Logs::LogGroup
DeletionPolicy: Retain
Properties:
LogGroupName: !Sub /aws/lambda/${validateData}
InvalidData:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub ${AWS::StackName}-invalidda-${AWS::AccountId}
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: aws:kms
KMSMasterKeyID: alias/aws/s3
PublicAccessBlockConfiguration:
IgnorePublicAcls: true
RestrictPublicBuckets: true
InvalidDataBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref InvalidData
PolicyDocument:
Id: RequireEncryptionInTransit
Version: '2012-10-17'
Statement:
- Principal: '*'
Action: '*'
Effect: Deny
Resource:
- !GetAtt InvalidData.Arn
- !Sub ${InvalidData.Arn}/*
Condition:
Bool:
aws:SecureTransport: 'false'
Transform: AWS::Serverless-2016-10-31