-
Notifications
You must be signed in to change notification settings - Fork 1
/
serverless.yml
118 lines (107 loc) · 3.05 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
service: promise-api
frameworkVersion: '3'
plugins:
- serverless-prune-plugin
- serverless-domain-manager
custom:
prune:
automatic: true
includeLayers: true
number: 3
domain:
api:
prod: api.promise-app.com
dev: api.dev.promise-app.com
websocket:
prod: ws.promise-app.com
dev: ws.dev.promise-app.com
customDomain:
rest:
endpointType: EDGE
stage: ${self:provider.stage}
domainName: ${self:custom.domain.api.${self:provider.stage}}
certificateArn: arn:aws:acm:us-east-1:${aws:accountId}:certificate/bb2cf4ae-22a7-41c9-bfc4-98a983b88663
websocket:
endpointType: REGIONAL
stage: ${self:provider.stage}
domainName: ${self:custom.domain.websocket.${self:provider.stage}}
certificateArn: arn:aws:acm:ap-northeast-2:${aws:accountId}:certificate/c611f60a-37d4-456a-922e-ad5f4836d248
provider:
name: aws
runtime: nodejs20.x
deploymentBucket:
name: ${self:service}-${self:provider.stage}-deployment
versioning: true
region: ${env:AWS_DEFAULT_REGION}
stage: ${env:STAGE}
httpApi:
cors: true
ecr:
images:
appimage:
uri: ${aws:accountId}.dkr.ecr.${aws:region}.amazonaws.com/${self:service}-${self:provider.stage}:appimage
iam:
role:
statements:
- Effect: Allow
Action:
- ec2:CreateNetworkInterface
- ec2:DescribeNetworkInterfaces
- ec2:DeleteNetworkInterface
Resource: '*'
- Effect: Allow
Action: s3:PutObject
Resource: arn:aws:s3:::${env:AWS_S3_BUCKET_NAME}/*
- Effect: Allow
Action:
- execute-api:ManageConnections
- execute-api:Invoke
Resource: arn:aws:execute-api:${aws:region}:${aws:accountId}:*
apiGateway:
binaryMediaTypes:
- '*/*'
websocketsApiName: ${self:provider.stage}-${self:service}-ws
environment:
SERVERLESS: true
TZ: ${env:TZ}
STAGE: ${self:provider.stage}
NODE_ENV: ${env:NODE_ENV}
NO_COLOR: ${env:NO_COLOR}
JWT_SIGN_KEY: ${env:JWT_SIGN_KEY}
JWT_VERIFY_KEY: ${env:JWT_VERIFY_KEY}
INTHASH_KEY: ${env:INTHASH_KEY}
SQIDS_KEY: ${env:SQIDS_KEY}
JWT_ACCESS_EXPIRES_IN: ${env:JWT_ACCESS_EXPIRES_IN}
JWT_REFRESH_EXPIRES_IN: ${env:JWT_REFRESH_EXPIRES_IN}
DB_URL: ${env:DB_URL}
REDIS_HOST: ${env:REDIS_HOST}
REDIS_PORT: ${env:REDIS_PORT}
REDIS_PASSWORD: ${env:REDIS_PASSWORD}
AWS_S3_BUCKET_NAME: ${env:AWS_S3_BUCKET_NAME}
AWS_GW_WEBSOCKET_ENDPOINT:
Fn::Join:
- ''
- - 'https://'
- Ref: 'WebsocketsApi'
- '.execute-api.'
- Ref: 'AWS::Region'
- '.'
- Ref: 'AWS::URLSuffix'
- '/'
- ${self:provider.stage}
functions:
main:
timeout: 30
memorySize: 1024
image:
name: appimage
command:
- dist/main.handler
entryPoint:
- /lambda-entrypoint.sh
events:
- http: ANY /
- http: ANY /{proxy+}
- websocket: $connect
- websocket: $disconnect
- websocket: $default