53
loading...
This website collects cookies to deliver better user experience
mkdir how-to-trigger-lambda-from-kinesis
cd how-to-trigger-lambda-from-kinesis
npx cdk init app --language typescript
npm i @aws-cdk/aws-kinesis
lib/how-to-trigger-lambda-from-kinesis-stack.ts
, add a new Kinesis stream, and deploy.import * as cdk from '@aws-cdk/core';
import * as kinesis from '@aws-cdk/aws-kinesis';
export class HowToTriggerLambdaFromKinesisStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const stream = new kinesis.Stream(this, 'MyKinesisStream', {
streamName: 'MyKinesisStream',
});
}
}
npm run cdk deploy
npm i @aws-cdk/aws-lambda
npm run cdk bootstrap
exports.handler = async (event) => {
event.Records.forEach((record) => {
console.log('Record: %j', record);
});
};
lib/how-to-trigger-lambda-from-kinesis-stack.ts
, add a new Lambda function, and deploy.import * as cdk from '@aws-cdk/core';
import * as kinesis from '@aws-cdk/aws-kinesis';
import * as lambda from '@aws-cdk/aws-lambda';
export class HowToTriggerLambdaFromKinesisStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const stream = new kinesis.Stream(this, 'MyKinesisStream', {
streamName: 'MyKinesisStream',
});
const lambdaFunction = new lambda.Function(this, 'Function', {
code: lambda.Code.fromAsset('src'),
handler: 'index.handler',
functionName: 'KinesisMessageHandler',
runtime: lambda.Runtime.NODEJS_12_X,
});
}
}
npm run cdk deploy
npm i @aws-cdk/aws-lambda-event-sources
import * as cdk from '@aws-cdk/core';
import * as kinesis from '@aws-cdk/aws-kinesis';
import * as lambda from '@aws-cdk/aws-lambda';
import * as lambdaEventSources from '@aws-cdk/aws-lambda-event-sources';
export class HowToTriggerLambdaFromKinesisStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const stream = new kinesis.Stream(this, 'MyKinesisStream', {
streamName: 'MyKinesisStream',
});
const lambdaFunction = new lambda.Function(this, 'Function', {
code: lambda.Code.fromAsset('src'),
handler: 'index.handler',
functionName: 'KinesisMessageHandler',
runtime: lambda.Runtime.NODEJS_12_X,
});
const eventSource = new lambdaEventSources.KinesisEventSource(stream, {
startingPosition: lambda.StartingPosition.TRIM_HORIZON,
});
lambdaFunction.addEventSource(eventSource);
}
}
npm run cdk deploy
aws kinesis list-streams
MyKinesisStream
. Please refer to the Kinesis docs for information about these arguments.aws kinesis put-record \
--data "aGVsbG8sIHdvcmxk" \
--stream-name MyKinesisStream \
--partition-key pk1
/aws/lambda/KinesisMessageHandler
and open up the latest LogStream. You should see some log messages that look similar to this.npm run cdk destroy
53