-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserverless.yml
137 lines (128 loc) · 3.21 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
132
133
134
135
136
137
service: products
frameworkVersion: "2"
useDotenv: true
plugins:
- serverless-webpack
- serverless-dynamodb-local
- serverless-offline-dotenv
- serverless-offline
custom:
webpack:
webpackConfig: "./webpack.config.js"
includeModules:
forceExclude:
- aws-sdk
packager: "npm"
serverless-offline:
httpPort: 4000
ignoreJWTSignature: true
imageUploadBucket: imagebucket-products-dev
provider:
name: aws
region: eu-central-1
# profile: swexception
runtime: nodejs12.x
lambdaHashingVersion: "20201221"
stage: ${opt:stage, 'dev'}
apiGateway:
restApiId: 95kq9eggu9
restApiRootResourceId: zsd84g8moe
environment:
AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
DOMAIN_SUFFIX: eml-be
CALLBACK_URL: http://localhost:3000
PRODUCT_IMG_BUCKET: ${self:custom.imageUploadBucket}
REGION: ${self:provider.region}
SERVICES: ${env:SERVICES}
iam:
role:
statements:
- Effect: Allow
Action:
- dynamodb:*
- s3:*
Resource: "*"
functions:
createProduct:
handler: "src/handlers/createProduct.HANDLER"
events:
- http:
path: /products
method: POST
cors: true
updateProduct:
handler: "src/handlers/updateProduct.HANDLER"
events:
- http:
path: /products/{id}
method: PATCH
cors: true
getProduct:
handler: "src/handlers/getProduct.HANDLER"
events:
- http:
path: /products/{id}
method: GET
cors: true
getProducts:
handler: "src/handlers/getProducts.HANDLER"
events:
- http:
path: /products/
method: GET
cors: true
updateStock:
handler: "src/handlers/updateStock.HANDLER"
events:
- http:
path: /products/stock/{id}
method: PATCH
cors: true
deleteProduct:
handler: "src/handlers/deleteProduct.HANDLER"
events:
- http:
path: /products/{id}
method: DELETE
cors: true
resources:
Resources:
#bucket for products imgs management
BucketImage:
Type: AWS::S3::Bucket
Properties:
BucketName: imagebucket-products-dev
AccessControl: PublicRead #!!!public!!!
ProductsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: products
AttributeDefinitions:
- AttributeName: category
AttributeType: "S"
- AttributeName: id
AttributeType: "S"
- AttributeName: netPrice
AttributeType: "N"
KeySchema:
- AttributeName: category
KeyType: HASH
- AttributeName: id
KeyType: RANGE
LocalSecondaryIndexes:
- IndexName: categoryPrice
KeySchema:
- AttributeName: category
KeyType: HASH
- AttributeName: netPrice
KeyType: RANGE
Projection:
ProjectionType: "ALL"
GlobalSecondaryIndexes:
- IndexName: id-index
KeySchema:
- AttributeName: id
KeyType: HASH
Projection:
ProjectionType: ALL
BillingMode: PAY_PER_REQUEST