-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserverless.yml
executable file
·106 lines (97 loc) · 2.72 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
# Welcome to Serverless!
#
# This file is the main config file for your service.
# It's very minimal at this point and uses default values.
# You can always add more config options for more control.
# We've included some commented out config examples here.
# Just uncomment any of them to get that config option.
#
# For full config options, check the docs:
# docs.serverless.com
#
# Happy Coding!
service: pioco-form # NOTE: update this with your service name
# You can pin your service to only deploy with a specific Serverless version
# Check out our docs for more details
# frameworkVersion: "=X.X.X"
#plugins:
# - serverless-dynamodb-local
# - serverless-offline-python
provider:
name: aws
runtime: python3.6
# you can overwrite defaults here
stage: prod
region: eu-west-1
variableSyntax: '\${{([\s\S]+?)}}'
apiKeys:
- ${{self:custom.stage}}-piocoFormKey
usagePlan:
quota:
limit: 1000
offset: 2
period: MONTH
throttle:
burstLimit: 100
rateLimit: 10
iamRoleStatements:
- Effect: "Allow"
Action:
- dynamodb:BatchWriteItem
- dynamodb:PutItem
- dynamodb:UpdateItem
Resource:
Fn::Sub: 'arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${{self:custom.subscriptionTableName}}'
- Effect: "Allow"
Action:
- "ssm:GetParameter*"
- "ssm:GetParameter"
Resource:
Fn::Sub: 'arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/pioco-slack-token'
custom:
stage: "${{opt:stage, self:provider.stage}}"
subscriptionTableName: "${{self:custom.stage}}-pioco-subscriptions"
serverless-offline:
port: 4000
dynamodb:
# # If you only want to use DynamoDB Local in some stages, declare them here
stages:
- dev
start:
port: 8001
# inMemory: true
# migrate: true
# seed: true
# convertEmptyValues: true
functions:
subscription_post:
handler: formhandler.handle_post
events:
- http:
path: subscription
method: post
private: true
cors: true
environment:
subscription_table: ${{self:custom.subscriptionTableName}}
slack_token_parameter_name: pioco-slack-token
resources:
Resources:
subscriptionsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${{self:custom.subscriptionTableName}}
AttributeDefinitions:
-
AttributeName: "email"
AttributeType: "S"
KeySchema:
-
AttributeName: "email"
KeyType: "HASH"
ProvisionedThroughput:
ReadCapacityUnits: "1"
WriteCapacityUnits: "5"
TimeToLiveSpecification:
AttributeName: Expiration
Enabled: true