-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserverless.ts
96 lines (93 loc) · 2.27 KB
/
serverless.ts
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
import type { AWS } from '@serverless/typescript';
import pullrequest from '@functions/pulls';
const serverlessConfiguration: AWS = {
service: 'serverless-github-api',
org: 'meddy672',
frameworkVersion: '3',
plugins: [
'serverless-esbuild',
'serverless-api-gateway-throttling',
'serverless-iam-roles-per-function',
'serverless-aws-documentation',
'serverless-plugin-aws-alerts',
'serverless-api-gateway-caching',
'serverless-export-env'
],
// useDotenv: true,
provider: {
name: 'aws',
stage: '${opt:stage, "dev"}',
logs: {
restApi: true
},
runtime: 'nodejs14.x',
tracing: {
apiGateway: true,
},
apiGateway: {
minimumCompressionSize: 1024,
shouldStartNameWithService: true,
metrics: true
},
iamRoleStatements: [
{
Effect: "Allow",
Action: ["xray:PutTraceSegments", "xray:PutTelemetryRecords"],
Resource: "*"
}
],
environment: {
AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1',
NODE_OPTIONS: '--enable-source-maps --stack-trace-limit=1000',
API_URL: {
'Fn::Sub': 'https://${ApiGatewayRestApi}.execute-api.${AWS::Region}.amazonaws.com/${sls:stage}/github/pullrequest'
}
},
lambdaHashingVersion: '20201221',
},
functions: { pullrequest },
package: { individually: true },
custom: {
esbuild: {
bundle: true,
minify: true,
sourcemap: true,
exclude: ['aws-sdk'],
target: 'node14',
define: { 'require.resolve': undefined },
platform: 'node',
concurrency: 10,
},
apiGatewayCaching: {
enabled: true
},
apiGatewayThrottling: {
maxRequestsPerSecond: 1000,
maxConcurrentRequests: 500
},
exportEnv: {
overwrite: true
},
outPuts: {
RestaurantsTable: {
Value: '!Ref RestaurantsTable'
}
},
alerts: {
stages: ['dev', 'production'],
topics: {
alarm: {
topic: '${self:service}-${sls:stage}-alerts-alarm',
notifications: [
{
protocol: 'email',
endpoint: '[email protected]'
}
]
}
},
alarms: ['functionErrors', 'functionThrottles']
}
},
};
module.exports = serverlessConfiguration;