-
Notifications
You must be signed in to change notification settings - Fork 0
/
serverless.yml
96 lines (93 loc) · 2.5 KB
/
serverless.yml
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
service: candidate-api
provider:
name: aws
runtime: nodejs14.x
region: us-east-1
stage: dev
deploymentBucket:
name: ${self:provider.environment.S3_BUCKET}
environment:
DYNAMODB_TABLE: ${opt:stage, self:provider.stage}-candidate-table
S3_BUCKET: ${opt:stage, self:provider.stage}-candidate-bucket
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: 'arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE}*'
functions:
createCandidate:
handler: src/api/create.candidate
events:
- http:
path: candidate
method: post
cors: true
authorizer:
name: tokenAuthorizer
type: token
resultTtlInSeconds: 0
identitySource: method.request.header.authorizationToken
request:
schema:
application/json: ${file(./src/validator/candidate.json)}
createAppointment:
handler: src/api/create.appointment
events:
- http:
path: appointment/{id}
method: put
cors: true
authorizer:
name: requestAuthorizer
type: request
resultTtlInSeconds: 60
identitySource: method.request.header.authorizationToken
request:
schema:
application/json: ${file(./src/validator/appointment.json)}
listCandidates:
handler: src/api/list.candidates
events:
- http:
path: candidate
method: get
cors: true
listAppointments:
handler: src/api/list.appointments
events:
- http:
path: candidate/{id}
method: get
cors: true
listAvailability:
handler: src/api/list.availability
events:
- http:
path: availability
method: get
cors: true
getAppointment:
handler: src/api/get.appointment
events:
- http:
path: appointment/{id}
method: get
cors: true
getAvailability:
handler: src/api/get.availability
events:
- http:
path: availability/{id}
method: get
cors: true
tokenAuthorizer:
handler: src/validator/tokenAuthorizer.handler
requestAuthorizer:
handler: src/validator/requestAuthorizer.handler
plugins:
- serverless-plugin-typescript