Skip to content

Commit

Permalink
[firehose] update config
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Nov 4, 2017
1 parent 5e451f2 commit e7e75d8
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 44 deletions.
7 changes: 3 additions & 4 deletions firehose/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@ npm install
serverless deploy
```

## How to use

1. Run `serverless invoke --function dataReceiver --path event.json` to send data to the Kinesis stream
2. Run `serverless logs --function logger` to see the which data was send to the Kinesis `date-receiver` stream
```
serverless invoke --function receiver --path event.json
```

## AWS services used

Expand Down
20 changes: 5 additions & 15 deletions firehose/handler.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
'use strict';

const AWS = require('aws-sdk');
const uuid = require('uuid');

module.exports.dataReceiver = (event, context, callback) => {
module.exports.receiver = (event, context, callback) => {
const data = event.data;

const firehose = new AWS.Firehose();

const partitionKey = uuid.v1();

const params = {
Data: data,
PartitionKey: partitionKey,
StreamName: 'kinesis-streams-stream'
Record: {
Data: data
},
DeliveryStreamName: 'serverless-firehose'
};

return firehose.putRecord(params, (error, data) => {
Expand All @@ -23,10 +20,3 @@ module.exports.dataReceiver = (event, context, callback) => {
callback(null, { message: 'Data successfully written to Kinesis stream "data-receiver"' });
});
};

module.exports.logger = (event, context, callback) => {
// print out the event information on the console (so that we can see it in the CloudWatch logs)
console.log(`The following data was written to the Kinesis stream "data-receiver":\n${JSON.stringify(event.Records[0].kinesis, null, 2)}`);

callback(null, { event });
};
9 changes: 3 additions & 6 deletions firehose/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
{
"name": "kinesis-streams",
"name": "kinesis-firehose",
"version": "0.1.0",
"description": "Serverless service to showcase Kinesis stream support",
"description": "Servelress Kinesis Firehose",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "MIT",
"dependencies": {
"uuid": "^2.0.3"
}
"license": "MIT"
}
71 changes: 52 additions & 19 deletions firehose/serverless.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
service: serverless-firehose

custom:
names:
kinesis: ${self:service}-stream

provider:
name: aws
runtime: nodejs4.3
Expand All @@ -19,21 +15,58 @@ provider:
- "firehose:*"

functions:
dataReceiver:
handler: handler.dataReceiver
logger:
handler: handler.logger
events:
- stream:
type: kinesis
arn:
Fn::GetAtt:
- KinesisStream
- Arn
receiver:
handler: handler.receiver
# events:
# - http:
# path: /receiver
# method: post

resources:
Resources:
KinesisStream:
Type: AWS::Kinesis::Stream
FirehoseToS3Role:
Type: AWS::IAM::Role
Properties:
RoleName: FirehoseToS3Role
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service:
- firehose.amazonaws.com
Action:
- sts:AssumeRole
Policies:
- PolicyName: FirehoseToS3Policy
PolicyDocument:
Statement:
- Effect: Allow
Action:
- s3:AbortMultipartUpload
- s3:GetBucketLocation
- s3:GetObject
- s3:ListBucket
- s3:ListBucketMultipartUploads
- s3:PutObject
Resource: '*'
ServerlessKinesisFirehoseBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
Properties:
BucketName: serverless-firehose-bucket
ServerlessKinesisFirehose:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
Name: ${self:custom.names.kinesis}
ShardCount: 1
DeliveryStreamName: serverless-firehose
S3DestinationConfiguration:
BucketARN:
Fn::Join:
- ''
- - 'arn:aws:s3:::'
- Ref: ServerlessKinesisFirehoseBucket
BufferingHints:
IntervalInSeconds: "60"
SizeInMBs: "1"
CompressionFormat: "UNCOMPRESSED"
Prefix: "raw/"
RoleARN: { Fn::GetAtt: [ FirehoseToS3Role, Arn ] }

0 comments on commit e7e75d8

Please sign in to comment.