-
Notifications
You must be signed in to change notification settings - Fork 21
/
template.yaml
140 lines (131 loc) · 3.34 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
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Globals:
Function:
MemorySize: 128
Architectures: ["arm64"]
Handler: bootstrap
Runtime: provided.al2
Timeout: 5
Tracing: Active
Environment:
Variables:
TABLE: !Ref Table
Resources:
GetProductsFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/get-products/
Events:
Api:
Type: HttpApi
Properties:
Path: /
Method: GET
Policies:
- Version: "2012-10-17"
Statement:
- Effect: Allow
Action: dynamodb:Scan
Resource: !GetAtt Table.Arn
Metadata:
BuildMethod: makefile
GetProductFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/get-product/
Events:
Api:
Type: HttpApi
Properties:
Path: /{id}
Method: GET
Policies:
- Version: "2012-10-17"
Statement:
- Effect: Allow
Action: dynamodb:GetItem
Resource: !GetAtt Table.Arn
Metadata:
BuildMethod: makefile
DeleteProductFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/delete-product/
Events:
Api:
Type: HttpApi
Properties:
Path: /{id}
Method: DELETE
Policies:
- Version: "2012-10-17"
Statement:
- Effect: Allow
Action: dynamodb:DeleteItem
Resource: !GetAtt Table.Arn
Metadata:
BuildMethod: makefile
PutProductFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/put-product/
Events:
Api:
Type: HttpApi
Properties:
Path: /{id}
Method: PUT
Policies:
- Version: "2012-10-17"
Statement:
- Effect: Allow
Action: dynamodb:PutItem
Resource: !GetAtt Table.Arn
Metadata:
BuildMethod: makefile
DDBStreamsFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/products-stream/
Timeout: 10
Events:
TableStream:
Type: DynamoDB
Properties:
BatchSize: 1000
FunctionResponseTypes:
- ReportBatchItemFailures
MaximumBatchingWindowInSeconds: 10
StartingPosition: TRIM_HORIZON
Stream: !GetAtt Table.StreamArn
Environment:
Variables:
EVENT_BUS_NAME: !Ref EventBus
MemorySize: 128
Policies:
- Version: "2012-10-17"
Statement:
- Effect: Allow
Action: events:PutEvents
Resource: !GetAtt EventBus.Arn
Table:
Type: AWS::DynamoDB::Table
Properties:
AttributeDefinitions:
- AttributeName: id
AttributeType: S
BillingMode: PAY_PER_REQUEST
KeySchema:
- AttributeName: id
KeyType: HASH
StreamSpecification:
StreamViewType: NEW_AND_OLD_IMAGES
EventBus:
Type: AWS::Events::EventBus
Properties:
Name: !Ref AWS::StackName
Outputs:
ApiUrl:
Description: "API Gateway endpoint URL"
Value: !Sub "https://${ServerlessHttpApi}.execute-api.${AWS::Region}.amazonaws.com/"