-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserverless.yml
134 lines (123 loc) · 3.47 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
132
133
134
# 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: forta-bot-db
# You can pin your service to only deploy with a specific Serverless version
# Check out our docs for more details
# frameworkVersion: "=X.X.X"
frameworkVersion: ">=2.24.0"
provider:
name: aws
runtime: go1.x
profile: forta-research # Set this to your desired aws profile
architecture: x86_64
httpApi:
disableDefaultEndpoint: true
# you can overwrite defaults here
region: us-east-1
# you can add statements to the Lambda function's IAM Role here
iam:
role:
statements:
- Effect: "Allow"
Action:
- "s3:ListBucket"
Resource: { "Fn::Join" : ["", ["arn:aws:s3:::", { "Ref" : "ServerlessDeploymentBucket" } ] ] }
- Effect: "Allow"
Action:
- "s3:PutObject"
Resource:
Fn::Join:
- ""
- - "arn:aws:s3:::"
- "Ref" : "ServerlessDeploymentBucket"
- "/*"
- Effect: Allow
Action: s3:ListBucket
Resource: arn:aws:s3:::${opt:stage}-forta-bot-db
- Effect: Allow
Action:
- s3:GetObject
- s3:PutObject
- s3:DeleteObject
Resource: arn:aws:s3:::${opt:stage}-forta-bot-db/*
- Effect: Allow
Action:
- dynamodb:PutItem
- dynamodb:GetItem
Resource: arn:aws:dynamodb:*:*:table/${opt:stage}-forta-bot-db-auth
# you can define service wide environment variables here
# environment:
# variable1: value1
package:
individually: true
exclude:
- ./**
functions:
handler:
handler: bin/lambda
package:
include:
- ./bin/lambda
environment:
bucket: ${opt:stage}-forta-bot-db
table: ${opt:stage}-forta-bot-db-auth
POLYGON_JSON_RPC: ${ssm:POLYGON_JSON_RPC}
events:
- httpApi:
method: POST
path: /database/{scope}/{key}
- httpApi:
method: PUT
path: /database/{scope}/{key}
- httpApi:
method: GET
path: /database/{scope}/{key}
- httpApi:
method: DELETE
path: /database/{scope}/{key}
- httpApi:
method: POST
path: /database/{key}
- httpApi:
method: PUT
path: /database/{key}
- httpApi:
method: GET
path: /database/{key}
- httpApi:
method: DELETE
path: /database/{key}
# Define function environment variables here
# environment:
# variable2: value2
# you can add CloudFormation resource templates here
resources:
Resources:
FortaDBBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${opt:stage}-forta-bot-db
FortaAuthCache:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${opt:stage}-forta-bot-db-auth
AttributeDefinitions:
- AttributeName: authId
AttributeType: S
KeySchema:
- AttributeName: authId
KeyType: HASH
TimeToLiveSpecification:
AttributeName: expiresAt
Enabled: true
BillingMode: PAY_PER_REQUEST