-
Notifications
You must be signed in to change notification settings - Fork 29
/
template.yaml
144 lines (130 loc) · 4.26 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
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
study-datalake
Rest API to manage a Data Lake of study links
Globals:
Function:
Timeout: 20
MemorySize: 512
Environment:
Variables:
TABLE_NAME: !Ref StudyTable
ENDPOINT_OVERRIDE: ""
Resources:
CreateStudyRecordFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: target/study-datalake-1.0.0-SNAPSHOT-jar-with-dependencies.jar
Handler: br.com.iwe.handler.CreateStudyRecord::handleRequest
Runtime: java8
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref StudyTable
Events:
CreateStudyRecord:
Type: Api
Properties:
Path: /study
Method: post
GetStudyRecordsByPeriodFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: target/study-datalake-1.0.0-SNAPSHOT-jar-with-dependencies.jar
Handler: br.com.iwe.handler.GetStudyRecordsByPeriod::handleRequest
Runtime: java8
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref StudyTable
Events:
GetStudyRecordsByPeriod:
Type: Api
Properties:
Path: /study/{topic}/findByPeriod
Method: get
RequestParameters:
- method.request.querystring.starts
- method.request.querystring.ends
GetStudyRecordsByTagFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: target/study-datalake-1.0.0-SNAPSHOT-jar-with-dependencies.jar
Handler: br.com.iwe.handler.GetStudyRecordsByTag::handleRequest
Runtime: java8
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref StudyTable
Events:
GetStudyRecordsByTag:
Type: Api
Properties:
Path: /study/{topic}/findByTag
Method: get
RequestParameters:
- method.request.querystring.tag
GetStudyRecordsByIsConsumedFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: target/study-datalake-1.0.0-SNAPSHOT-jar-with-dependencies.jar
Handler: br.com.iwe.handler.GetStudyRecordsByIsConsumed::handleRequest
Runtime: java8
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref StudyTable
Events:
GetStudyRecordsByIsConsumed:
Type: Api
Properties:
Path: /study/{topic}/findByIsConsumed
Method: get
RequestParameters:
- method.request.querystring.isconsumed
StudyTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: study
AttributeDefinitions:
- AttributeName: topic
AttributeType: S
- AttributeName: dateTimeCreation
AttributeType: S
- AttributeName: tag
AttributeType: S
- AttributeName: consumed
AttributeType: S
KeySchema:
- AttributeName: topic
KeyType: HASH
- AttributeName: dateTimeCreation
KeyType: RANGE
LocalSecondaryIndexes:
- IndexName: tagIndex
KeySchema:
- AttributeName: topic
KeyType: HASH
- AttributeName: tag
KeyType: RANGE
Projection:
ProjectionType: ALL
- IndexName: consumedIndex
KeySchema:
- AttributeName: topic
KeyType: HASH
- AttributeName: consumed
KeyType: RANGE
Projection:
ProjectionType: ALL
BillingMode: PAY_PER_REQUEST
Outputs:
CreateStudyRecordFunction:
Description: "CreateStudyRecord Lambda Function ARN"
Value: !GetAtt CreateStudyRecordFunction.Arn
GetStudyRecordsByPeriodFunction:
Description: "GetStudyRecordsByPeriod Lambda Function ARN"
Value: !GetAtt GetStudyRecordsByPeriodFunction.Arn
GetStudyRecordsByTagFunction:
Description: "GetStudyRecordsByTag Lambda Function ARN"
Value: !GetAtt GetStudyRecordsByTagFunction.Arn
GetStudyRecordsByIsConsumedFunction:
Description: "GetStudyRecordsByIsConsumed Lambda Function ARN"
Value: !GetAtt GetStudyRecordsByIsConsumedFunction.Arn