-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsam-template.yaml
117 lines (117 loc) · 3.09 KB
/
sam-template.yaml
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
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: 'An AWS CloudFormation template for running scheduled tasks.'
Resources:
ingestTopic:
Type: 'AWS::SNS::Topic'
Properties: {}
tasksTable:
Type: 'AWS::DynamoDB::Table'
Properties:
KeySchema:
- AttributeName: taskId
KeyType: HASH
AttributeDefinitions:
- AttributeName: taskId
AttributeType: S
ProvisionedThroughput:
ReadCapacityUnits:
Ref: ReadCapacityUnits
WriteCapacityUnits:
Ref: WriteCapacityUnits
IngestFunction:
Type: 'AWS::Serverless::Function'
Properties:
Handler: src/ingest.handler
Runtime: nodejs20.x
CodeUri: src
MemorySize: 128
Timeout: 3
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'sns:Publish'
Resource:
Ref: DestinationArns
- Effect: Allow
Action:
- 'dynamodb:UpdateItem'
- 'dynamodb:Scan'
- 'dynamodb:DeleteItem'
Resource:
'Fn::GetAtt':
- tasksTable
- Arn
Environment:
Variables:
TASKS_TABLE:
Ref: tasksTable
Events:
Event1:
Type: SNS
Properties:
Topic:
Ref: ingestTopic
ScheduleFunction:
Type: 'AWS::Serverless::Function'
Properties:
Handler: src/schedule.handler
Runtime: nodejs20.x
CodeUri: src
MemorySize: 128
Timeout: 60
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'sns:Publish'
Resource:
Ref: DestinationArns
- Effect: Allow
Action:
- 'dynamodb:UpdateItem'
- 'dynamodb:Scan'
- 'dynamodb:DeleteItem'
Resource:
'Fn::GetAtt':
- tasksTable
- Arn
Environment:
Variables:
TASKS_TABLE:
Ref: tasksTable
Events:
Event1:
Type: Schedule
Properties:
Schedule:
Ref: PollingSchedule
Outputs:
IngestSNSTopicArn:
Description: The ARN of the Ingest SNS topic
Value:
Ref: ingestTopic
Parameters:
PollingSchedule:
Default: rate(5 minutes)
Type: String
Description: >-
The CloudWatch ScheduleExpression defining the interval the polling Lambda
runs at.
ReadCapacityUnits:
Default: 1
Type: Number
Description: The read capacity units for the Scheduled Tasks DynamoDB table.
WriteCapacityUnits:
Default: 1
Type: Number
Description: The write capacity units for the Scheduled Tasks DynamoDB table.
DestinationArns:
Default: ''
Type: CommaDelimitedList
Description: >-
A comma-separated list of possible destination SNS topic ARNs for
permissioning the polling Lambda.