-
Notifications
You must be signed in to change notification settings - Fork 27
/
serverless.yml
131 lines (113 loc) · 3.64 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
119
120
121
122
123
124
125
126
127
128
129
130
131
# _____ _
# / ____| | |
# | (___ ___ _ ____ _____ _ __| | ___ ___ ___
# \___ \ / _ \ '__\ \ / / _ \ '__| |/ _ \/ __/ __|
# ____) | __/ | \ V / __/ | | | __/\__ \__ \
# |_____/ \___|_| \_/ \___|_| |_|\___||___/___/
# _____ _
# / ____| | | |
# | (___ | | __ _ ___| | __
# \___ \| |/ _` |/ __| |/ /
# ____) | | (_| | (__| <
# |_____/|_|\__,_|\___|_|\_\
#
#
#
# This file is the main config file for your bot.
# You can always add more config options for more control.
#
# For full config options, check the docs:
# docs.serverless.com
#
# Happy Coding!
service: serverless-slack
custom:
# Log all events to CloudWatch
slack_enable_logging: true
# The dynamodb table to store OAuth access data
slack_table_name: Teams
# The path used to post Slack events to
slack_event_path: slack
# The path used to install the Slack App
slack_install_path: slack
# The path to redirect to after an install
slack_install_redirect: https://slack.com
# Verification token
slack_verification_token: "xxxxxxxxxxxxx"
# Space delimited scopes
slack_client_scopes: "bot commands incoming-webhook"
# Client ID - quotes required
slack_client_id: "xxxxxxxxxx.xxxxxxxxxxxx"
# Client Secret - quotes required
slack_client_secret: "xxxxxxxxxxxxxxxxxx"
provider:
name: aws
runtime: nodejs8.10
profile: serverless
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:DescribeTable
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: "arn:aws:dynamodb:us-east-1:*:*"
environment:
TABLE_NAME: ${self:custom.slack_table_name}
CLIENT_ID: ${self:custom.slack_client_id}
CLIENT_SECRET: ${self:custom.slack_client_secret}
CLIENT_SCOPES: ${self:custom.slack_client_scopes}
INSTALL_REDIRECT: ${self:custom.slack_install_redirect}
VERIFICATION_TOKEN: ${self:custom.slack_verification_token}
ENABLE_LOGGING: ${self:custom.slack_enable_logging}
functions:
slack:
handler: src/index.handler
events:
## Slash Commands, Events, and Interactive Messages
- http:
path: ${self:custom.slack_event_path}
method: post
integration: lambda
response:
template: $input.path('$')
## OAuth Routes
- http:
path: ${self:custom.slack_install_path}
method: get
integration: lambda
request:
parameters:
querystrings:
code: true
state: true
response:
statusCodes:
201:
pattern: ''
301:
pattern: http.*
headers:
Location: integration.response.body.errorMessage
Cache-Control: "'no-cache, no-store, must-revalidate'"
resources:
Resources:
TeamsDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
-
AttributeName: id
AttributeType: S
KeySchema:
-
AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:custom.slack_table_name}