-
Notifications
You must be signed in to change notification settings - Fork 13
/
serverless.yaml
122 lines (116 loc) · 3.75 KB
/
serverless.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
service: nestjs-serverless-boilerplate
frameworkVersion: '3'
useDotenv: true
plugins:
- serverless-deployment-bucket
# *** offline plugins ***
- serverless-cloudside-plugin
- serverless-offline-sqs
- serverless-offline
provider:
name: aws
deploymentMethod: direct
runtime: nodejs16.x
architecture: arm64
region: ${opt:region, 'eu-west-1'}
stackTags:
StackName: ${self:service}-${sls:stage}
lambdaHashingVersion: '20201221'
profile: ${env:AWS_PROFILE}
memorySize: 2048 # global value for http handlers
timeout: 30 # global value for http handlers
versionFunctions: false
logRetentionInDays: 14
ecr:
images:
appimage:
path: ./
vpc:
securityGroupIds:
- ${env:SECURITY_GROUP_ID}
subnetIds:
- ${env:SUBNET_PRIVATE_A_ID}
- ${env:SUBNET_PRIVATE_B_ID}
- ${env:SUBNET_DATABASE_A_ID}
- ${env:SUBNET_DATABASE_B_ID}
iam:
role:
statements:
- Effect: 'Allow'
Action: '*'
Resource: '*'
deploymentBucket:
name: ${env:DEPLOYMENT_BUCKET_PREFIX}-${sls:stage}
environment: ${file(./serverless/provider/environment.yaml):environment}
apiGateway:
binaryMediaTypes:
- '*/*'
custom:
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& CUSTOM CONFIGURATION SECTION &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
offline: ${self:custom.offline:${strToBool(${env:IS_OFFLINE, false})}} # contains config based on IS_OFFLINE env
'offline:true': # offline enabled parameters
enabled: true
filePrefix: '-offline'
'offline:false': # offline disabled parameters
enabled: false
filePrefix: ''
nodeEnv: ${env:NODE_ENV}
acm:
certificates:
'us-east-1': ${env:CERTIFICATE_ARN_US_EAST_1}
domains:
root: ${env:ROOT_DOMAIN_NAME}
static: static.${env:ROOT_DOMAIN_NAME}
api: api-v2.${env:ROOT_DOMAIN_NAME}
cognito:
userPoolId: ${env:COGNITO_USER_POOL_ID}
clientId: ${env:COGNITO_CLIENT_ID}
s3:
bucketName: ${self:service}-bucket-${sls:stage}
sqs:
emailQueueName: ${self:service}-EmailQueue-${sls:stage}
dynamodb:
tableName: ${self:service}-table-${sls:stage}
database:
host: ${env:DATABASE_HOST}
port: ${env:DATABASE_PORT}
name: ${env:DATABASE_NAME}
secretArn: ${env:DATABASE_SECRET_ARN}
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& PLUGINS CONFIGURATION SECTION &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
# *** serverless-deployment-bucket config ***
deploymentBucket:
accelerate: true
blockPublicAccess: true
# *** serverless-offline config ***
serverless-offline:
host: 127.0.0.1
noPrependStageInUrl: true
noAuth: true
printOutput: false
allowCache: true
# *** serverless-offline-sqs config ***
serverless-offline-sqs:
autoCreate: true
apiVersion: '2012-11-05'
endpoint: ${env:LOCAL_BROKER_ENDPOINT, ''}
region: ${self:provider.region}
accessKeyId: root
secretAccessKey: root
skipCacheInvalidation: false
functions:
- ${file(./serverless/functions/apis${self:custom.offline.filePrefix}.function.yaml):functions}
- ${file(./serverless/functions/sqs-handler${self:custom.offline.filePrefix}.function.yaml):functions}
resources:
# route 53
- ${file(./serverless/resources/route53/static-record.route53.yaml)}
- ${file(./serverless/resources/route53/api-record.route53.yaml)}
# cloudfront
- ${file(./serverless/resources/cloudfront/origin-access-identity.cloudfront.yaml)}
- ${file(./serverless/resources/cloudfront/apis-distribution.cloudfront.yaml)}
- ${file(./serverless/resources/cloudfront/static-distribution.cloudfront.yaml)}
# sqs
- ${file(./serverless/resources/sqs/email-queue.sqs.yaml)}
# s3
- ${file(./serverless/resources/s3/bucket.s3.yaml)}
# dynamodb
#- ${file(./serverless/resources/dynamodb/table.dynamodb.yaml)}