generated from dvsa/cvs-svc-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
serverless.yml
117 lines (113 loc) · 3.83 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
# https://github.com/serverless/serverless/blob/master/docs/providers/aws/guide/functions.md
service: cvs-svc-trailer-registration
useDotenv: true
# Create an optimized package for our Functions
# This file has 2 purposes:
# - used to mock API Gateway so that we can work locally (with serverless-offline)
# - use webpack to bundle our code
package:
individually: true
exclude:
- node_modules/**
- .build/**
include:
- src/handler.ts
plugins:
# - serverless-dotenv-plugin
# https://github.com/serverless-heaven/serverless-webpack/tree/master/examples
- serverless-webpack
- serverless-dynamodb
# https://github.com/serverless-heaven/serverless-webpack#usage-with-serverless-offline
- serverless-offline
provider:
name: aws
runtime: nodejs18.x
apiGateway:
# https://www.serverless.com/framework/docs/deprecations/#LOAD_VARIABLES_FROM_ENV_FILES
shouldStartNameWithService: true
stage: ${env:AWS_PROVIDER_STAGE, 'local'}
region: ${env:AWS_PROVIDER_REGION, 'eu-west-2'}
environment:
SERVICE: trailers
functions:
# Use express routing so we don't rely on APIG and leverage express API
app:
handler: src/handler.handler
events:
- http: ANY /
# We will proxy version from here in the client to match the API specs e.g. <stage>/**/*/<service>
- http: 'ANY /{proxy+}'
# Can also define specific functions on exposed routes using pattern matching, see below as example:
# handler.ts containing exported getHello function is exposed on path /hello
# that you can test locally sls invoke local -f getHello -d '{"path": "hello"}' or with sls offline
# getHello:
# handler: src/handler.getHello
# events:
# - http: 'GET /hello'
custom:
# dotenv:
# basePath: './config/'
webpack:
webpackConfig: './scripts/webpack.config.js'
keepOutputDirectory: false
# can be toggled depending on env and .env files configuration
includeModules: true # Node modules configuration for packaging, TBC whether we need the node_modules or 'inject' them when hosted on S3
packager: 'npm' # Packager that will be used to package your external modules
excludeFiles: src/**/*.test.js # Provide a glob for files to ignore
# https://www.serverless.com/plugins/serverless-offline#usage-with-webpack - See Usage and command line options
serverless-offline:
httpPort: 3020
lambdaPort: 3021
serverless-dynamodb:
start:
port: 8020
inMemory: true
migrate: true
seed: true
noStart: false
host: 127.0.0.1
seed:
trailer-registration:
sources:
- table: cvs-local-trailer-registration
sources: [./tests/resources/trailer-registration.json]
stages:
- local
- dev
- test
resources:
Resources:
TrailerRegistration:
Type: AWS::DynamoDB::Table
Properties:
TableName: cvs-local-trailer-registration
AttributeDefinitions:
- AttributeName: vinOrChassisWithMake
AttributeType: S
- AttributeName: trn
AttributeType: S
KeySchema:
- AttributeName: vinOrChassisWithMake
KeyType: HASH
GlobalSecondaryIndexes:
- IndexName: vinOrChassisWithMakeIndex
KeySchema:
- AttributeName: vinOrChassisWithMake
KeyType: HASH
Projection:
ProjectionType: ALL
ProvisionedThroughput:
ReadCapacityUnits: '1'
WriteCapacityUnits: '1'
- IndexName: trnIndex
KeySchema:
- AttributeName: trn
KeyType: HASH
Projection:
ProjectionType: ALL
ProvisionedThroughput:
ReadCapacityUnits: '1'
WriteCapacityUnits: '1'
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1