-
Notifications
You must be signed in to change notification settings - Fork 17
/
template.yaml
130 lines (128 loc) · 3.51 KB
/
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
118
119
120
121
122
123
124
125
126
127
128
129
130
AWSTemplateFormatVersion : "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: A serverless stack using API Gateway, Lambda, DynamoDB, S3 and SNS
Parameters:
SNSEmailAddress:
Type: String
Default: [your_email_address]
Resources:
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
AttributeDefinitions:
- AttributeName: id
AttributeType: N
KeySchema:
- AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
StreamSpecification:
StreamViewType: NEW_IMAGE
GenerateImageFunction:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs6.10
Handler: index.handler
CodeUri: ./lambda/generate-image/
Environment:
Variables:
S3BucketName: !Ref "S3Bucket"
DynamoDBTableName: !Ref "DynamoDBTable"
Events:
DynamoDBInsert:
Type: DynamoDB
Properties:
Stream: !GetAtt "DynamoDBTable.StreamArn"
StartingPosition: TRIM_HORIZON
BatchSize: 10
Policies:
-
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- dynamodb:PutItem
Resource: !GetAtt "DynamoDBTable.Arn"
- Effect: Allow
Action:
- s3:PutObject
Resource: !Sub "arn:aws:s3:::${S3Bucket}/*"
ListDynamoDBFunction:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs6.10
Handler: index.handler
CodeUri: ./lambda/list-dynamodb/
Environment:
Variables:
DynamoDBTableName: !Ref "DynamoDBTable"
Events:
GetApiEndpoint:
Type: Api
Properties:
Path: /items
Method: GET
Policies:
-
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- dynamodb:Scan
Resource: !GetAtt "DynamoDBTable.Arn"
PublishSNSFunction:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs6.10
Handler: index.handler
CodeUri: ./lambda/publish-sns/
Environment:
Variables:
SNSTopicARN: !Ref "SNSTopic"
Events:
S3ObjectCreated:
Type: S3
Properties:
Bucket: !Ref "S3Bucket"
Events: s3:ObjectCreated:*
Policies:
-
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- sns:Publish
Resource: !Ref "SNSTopic"
PutDynamoDBFunction:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs6.10
Handler: index.handler
CodeUri: ./lambda/put-dynamodb/
Environment:
Variables:
DynamoDBTableName: !Ref "DynamoDBTable"
Events:
GetApiEndpoint:
Type: Api
Properties:
Path: /item/{id}
Method: PUT
Policies:
-
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- dynamodb:PutItem
Resource: !GetAtt "DynamoDBTable.Arn"
S3Bucket:
Type: AWS::S3::Bucket
SNSTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: !Ref "SNSEmailAddress"
Protocol: "email"