-
Notifications
You must be signed in to change notification settings - Fork 0
/
serverless.yml
91 lines (82 loc) · 2.27 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
service: lessthanonemin
frameworkVersion: '3'
provider:
name: aws
stage: dev
runtime: python3.9
lambdaHashingVersion: 20201221
region: ap-southeast-1
deploymentBucket:
name: lessthanonemin-deployment-bucket
serverSideEncryption: AES256
environment:
FEED_BUCKET_NAME: !Ref lessthanoneminScraperBucket
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:PutObject"
Resource: !Sub
- "arn:aws:s3:::#{BucketName}/*"
- BucketName: !Ref lessthanoneminScraperBucket
plugins:
- serverless-cloudformation-sub-variables
- serverless-step-functions
- serverless-python-requirements
- serverless-deployment-bucket
custom:
pythonRequirements:
dockerizePip: 'non-linux'
dockerImage: public.ecr.aws/sam/build-python3.9:latest
# Omits tests, __pycache__, *.pyc etc from dependencies
slim: true
functions:
lambdaScrape:
handler: launcher.scrape
scrape_quotes:
handler: launcher.scrape
environment:
SPIDER_NAME: 'quotes'
resources:
- ${file(./resources/s3-template.yml)}
stepFunctions:
stateMachines:
everyMinute:
type: EXPRESS
events:
- schedule:
rate: rate(1 minute)
name:
everyMinutes
definition:
StartAt: Create Loop Items
States:
Create Loop Items:
Type: Pass
Next: Loop
Result:
items: [ 1, 2, 3, 4, 5, 6 ]
Loop:
Type: Map
ItemsPath: "$.items"
MaxConcurrency: 1
Iterator:
StartAt: Wait 10 Seconds
States:
Wait 10 Seconds:
Type: Wait
Seconds: 10
Next: Invoke Lambdas
Invoke Lambdas:
Type: Parallel
Branches:
- StartAt: scrape_quotes
States:
scrape_quotes:
Type: Task
Resource: arn:aws:states:::lambda:invoke
Parameters:
FunctionName: !GetAtt scrape_quotes.Arn
InvocationType: Event
End: true
End: true
End: true