-
Notifications
You must be signed in to change notification settings - Fork 0
/
serverless.yml
97 lines (75 loc) · 2.35 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
service: i90bot
provider:
name: aws
runtime: python3.10
# The default stage is the "local" stage; CI can deploy other stages (dev and prod)
stage: local
# We use us-west-2 as our AWS region
region: us-west-2
# 30-second timeout by default
timeout: 30
# Tags that will be added to each of the deployment resources
tags:
env: ${self:custom.stage}
# Environment variables
environment:
# Sentry integration: sends Lambda errors to Sentry. Remove this if you don't want to
# use Sentry
SENTRY_DSN: ${ssm:i90bot.common.sentry_dsn}
SENTRY_ENVIRONMENT: ${self:custom.stage}
# The Slack Signing Secret (from your Slack App configuration). This is
# configured per-stage -- e.g. i90bot.local.slack_signing_secret
SLACK_SIGNING_SECRET: ${ssm:i90bot.${self:custom.stage}.slack_signing_secret}
# The i90 API key
I90_API_KEY: ${ssm:i90bot.common.api_key}
# Memory allocated to each lambda function
memorySize: 256
package:
exclude:
- 'node_modules/**'
- '.vscode/**'
- '.mypy_cache/**'
- 'package.json'
- 'yarn.lock'
plugins:
# This plugin installs our python dependencies, using docker to properly compile
# them for Lambda
- serverless-python-requirements
# Clean up old versions so we don't exceed our code storage quota
- serverless-prune-plugin
custom:
# Specify how to build our python dependencies, and which ones are
# already available in Lambda and don't need to be bundled with the
# application
pythonRequirements:
dockerizePip: true
noDeploy: [
'boto3',
'botocore',
'docutils',
'jmespath',
'python-dateutil',
's3transfer',
'six',
'pip',
'setuptools'
]
# Make stage/region accessible to other parts of the config
stage: ${opt:stage, self:provider.stage}
region: ${opt:region, self:provider.region}
# Automatically remove old function versions to avoid filling up your lambda code storage
# quota.
prune:
automatic: true
number: 3
functions:
shorten:
handler: app.shorten.handler
events:
- http:
method: POST
path: /shorten
# Slack has very short timeouts for slash commands, so we provision
# concurrency to keep it snappy. We only use 256MB of memory for this
# function, so the provisioned concurrency only costs $5/mo.
provisionedConcurrency: 2