11'use strict' ;
22
33const awsRequest = require ( '@serverless/test/aws-request' ) ;
4- const KinesisService = require ( 'aws-sdk' ) . Kinesis ;
4+
5+ // Support for both AWS SDK v2 and v3
6+ const getKinesisClient = ( ) => {
7+ if ( process . env . SLS_AWS_SDK_V3 === 'true' ) {
8+ // AWS SDK v3
9+ const { KinesisClient } = require ( '@aws-sdk/client-kinesis' ) ;
10+ const {
11+ CreateStreamCommand,
12+ DeleteStreamCommand,
13+ DescribeStreamCommand,
14+ PutRecordCommand
15+ } = require ( '@aws-sdk/client-kinesis' ) ;
16+
17+ const client = new KinesisClient ( { region : 'us-east-1' } ) ;
18+
19+ return {
20+ createStream : ( params ) => client . send ( new CreateStreamCommand ( params ) ) ,
21+ deleteStream : ( params ) => client . send ( new DeleteStreamCommand ( params ) ) ,
22+ describeStream : ( params ) => client . send ( new DescribeStreamCommand ( params ) ) ,
23+ putRecord : ( params ) => client . send ( new PutRecordCommand ( params ) ) ,
24+ } ;
25+ } else {
26+ // AWS SDK v2
27+ const KinesisService = require ( 'aws-sdk' ) . Kinesis ;
28+ return {
29+ createStream : ( params ) => awsRequest ( KinesisService , 'createStream' , params ) ,
30+ deleteStream : ( params ) => awsRequest ( KinesisService , 'deleteStream' , params ) ,
31+ describeStream : ( params ) => awsRequest ( KinesisService , 'describeStream' , params ) ,
32+ putRecord : ( params ) => awsRequest ( KinesisService , 'putRecord' , params ) ,
33+ } ;
34+ }
35+ } ;
36+
37+ const kinesis = getKinesisClient ( ) ;
538
639async function waitForKinesisStream ( streamName ) {
740 const params = {
841 StreamName : streamName ,
942 } ;
1043 return new Promise ( ( resolve ) => {
1144 const interval = setInterval ( ( ) => {
12- awsRequest ( KinesisService , ' describeStream' , params ) . then ( ( data ) => {
45+ kinesis . describeStream ( params ) . then ( ( data ) => {
1346 const status = data . StreamDescription . StreamStatus ;
1447 if ( status === 'ACTIVE' ) {
1548 clearInterval ( interval ) ;
@@ -27,7 +60,7 @@ async function createKinesisStream(streamName) {
2760 StreamName : streamName ,
2861 } ;
2962
30- return awsRequest ( KinesisService , ' createStream' , params ) . then ( ( ) =>
63+ return kinesis . createStream ( params ) . then ( ( ) =>
3164 waitForKinesisStream ( streamName )
3265 ) ;
3366}
@@ -37,7 +70,7 @@ async function deleteKinesisStream(streamName) {
3770 StreamName : streamName ,
3871 } ;
3972
40- return awsRequest ( KinesisService , ' deleteStream' , params ) ;
73+ return kinesis . deleteStream ( params ) ;
4174}
4275
4376async function putKinesisRecord ( streamName , message ) {
@@ -47,7 +80,7 @@ async function putKinesisRecord(streamName, message) {
4780 PartitionKey : streamName , // test streams are single shards
4881 } ;
4982
50- return awsRequest ( KinesisService , ' putRecord' , params ) ;
83+ return kinesis . putRecord ( params ) ;
5184}
5285
5386module . exports = {
0 commit comments