-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserverless.yml
131 lines (124 loc) · 3.33 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
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
service: sls-cake-ordering-system
frameworkVersion: '2'
configValidationMode: error
plugins:
- serverless-pseudo-parameters
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: 20201221
iam:
role:
statements:
- Effect: 'Allow'
Action:
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:GetItem
Resource: arn:aws:dynamodb:#{AWS::Region}:#{AWS::AccountId}:table/ordersTable
- Effect: 'Allow'
Action:
- kinesis:PutRecord
Resource: arn:aws:kinesis:#{AWS::Region}:#{AWS::AccountId}:stream/order-events
- Effect: 'Allow'
Action:
- ses:SendEmail
Resource: "*"
Condition:
StringEquals:
ses:FromAddress:
- Effect: 'Allow'
Action:
- sqs:SendMessage
Resource:
- arn:aws:sqs:#{AWS::Region}:#{AWS::AccountId}:deliveryServiceQueue
- arn:aws:sqs:#{AWS::Region}:#{AWS::AccountId}:customerServiceQueue
functions:
createOrder:
handler: handler.createOrder
events:
- http:
path: /order
method: post
environment:
orderTableName: ordersTable
orderStreamName: order-events
fulfillOrder:
handler: handler.fulfillOrder
events:
- http:
path: /order/fulfill
method: post
environment:
orderTableName: ordersTable
orderStreamName: order-events
sendOrderNotifications:
handler: handler.sendOrderNotifications
events:
- stream:
arn: arn:aws:kinesis:#{AWS::Region}:#{AWS::AccountId}:stream/order-events
environment:
region:
Ref: AWS::Region
cakeProducerMail: [email protected]
orderSystemMail: [email protected]
deliveryServiceQueue:
Ref: deliveryServiceQueue
orderTableName: ordersTable
deliveryCompanyNotifications:
handler: handler.deliveryCompanyNotifications
events:
- sqs:
arn:
Fn::GetAtt:
- deliveryServiceQueue
- Arn
batchSize: 1
completeOrder:
handler: handler.completeOrder
events:
- http:
path: /order/delivered
method: post
environment:
region:
Ref: AWS::Region
orderTableName: ordersTable
customerServiceQueue:
Ref: customerServiceQueue
customerReviewNotifications:
handler: handler.customerReviewNotifications
events:
- sqs:
arn:
Fn::GetAtt:
- customerServiceQueue
- Arn
batchSize: 1
resources:
Resources:
orderEventsStream:
Type: AWS::Kinesis::Stream
Properties:
Name: order-events
ShardCount: 1
orderTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ordersTable
AttributeDefinitions:
- AttributeName: "orderId"
AttributeType: "S"
KeySchema:
- AttributeName: "orderId"
KeyType: "HASH"
BillingMode: PAY_PER_REQUEST
deliveryServiceQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: deliveryServiceQueue
customerServiceQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: customerServiceQueue