/
serverless.yml
65 lines (60 loc) · 1.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
service: ghc
package:
individually: true
useDotenv: true
custom:
serverless-offline-sqs-external:
autoCreate: true # create queue if not exists
apiVersion: '2012-11-05'
endpoint: 'http://localhost:4566'
region: us-east-1
accessKeyId: root
secretAccessKey: root
skipCacheInvalidation: false
plugins:
- serverless-offline
- serverless-offline-sqs-external
provider:
name: aws
runtime: nodejs16.x
stage: ${opt:stage, 'dev'}
region: ap-south-1
versionFunctions: false
iamRoleStatements:
- Effect: "Allow"
Action:
- "sqs:*"
- "ses:*"
- "dynamodb:*"
Resource: "*"
environment:
REGION: ${self:provider.region}
STAGE: ${self:provider.stage}
NOTIFICATION_1_TIME_INTERVAL: 1800 # 30 min
NOTIFICATION_2_TIME_INTERVAL: 86400 # 1 day
NOTIFICATION_3_TIME_INTERVAL: 259200 # 3 days
functions:
api:
handler: api/index.handler
events:
- http:
path: /api
method: ANY
cors: ${file(./resources/CORSHeaders.yml)}
- http:
path: /api/{proxy+}
method: ANY
cors: ${file(./resources/CORSHeaders.yml)}
EmailSender:
handler: email/index.handler
events:
- stream:
filterPatterns:
- eventName: [REMOVE]
type: dynamodb
arn:
Fn::GetAtt: [AbandonedCheckoutTable, StreamArn]
batchSize: 1
resources:
Resources:
AbandonedCheckoutTable: ${file(./resources/AbandonedCheckoutTable.yml.yml)}