forked from theburningmonk/sns-to-api-gateway-demo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserverless.yml
68 lines (61 loc) · 1.62 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
service: sns-to-apigw-demo
plugins:
- serverless-apigateway-service-proxy
- serverless-cloudformation-sub-variables
provider:
name: aws
runtime: nodejs10.x
iamRoleStatements:
- Effect: Allow
Action: lambda:ListEventSourceMappings
Resource: '*'
- Effect: Allow
Action: lambda:UpdateEventSourceMapping
Resource: arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:event-source-mapping:*
custom:
apiGatewayServiceProxies:
- kinesis:
path: /kinesis
method: post
streamName: { Ref: 'MyStream' }
request:
template:
text/plain:
Fn::Sub:
- |
#set($msgBody = $util.parseJson($input.body))
#set($msgId = $msgBody.MessageId)
{
"Data": "$util.base64Encode($input.body)",
"PartitionKey": "$msgId",
"StreamName": "#{MyStreamArn}"
}
- MyStreamArn:
Fn::GetAtt: [MyStream, Arn]
functions:
api-gw:
handler: functions/apigw.handler
events:
- http:
path: /
method: post
kinesis:
handler: functions/kinesis.handler
environment:
KINESIS_ARN:
Fn::GetAtt: [MyStream, Arn]
events:
- stream:
type: kinesis
arn:
Fn::GetAtt: [MyStream, Arn]
# you can add CloudFormation resource templates here
resources:
Resources:
Topic:
Type: AWS::SNS::Topic
MyStream:
Type: AWS::Kinesis::Stream
Properties:
Name: my-stream
ShardCount: 1