diff --git a/types/aws-lambda/index.d.ts b/types/aws-lambda/index.d.ts index 2a8bad6c87..4aa58c602a 100644 --- a/types/aws-lambda/index.d.ts +++ b/types/aws-lambda/index.d.ts @@ -78,5 +78,6 @@ export * from "./trigger/s3-batch"; export * from "./trigger/ses"; export * from "./trigger/sns"; export * from "./trigger/sqs"; +export * from './trigger/msk'; export as namespace AWSLambda; diff --git a/types/aws-lambda/test/msk-tests.ts b/types/aws-lambda/test/msk-tests.ts new file mode 100644 index 0000000000..a13608672d --- /dev/null +++ b/types/aws-lambda/test/msk-tests.ts @@ -0,0 +1,19 @@ +import { MSKHandler, MSKEvent, MSKRecord } from 'aws-lambda'; + +const handler: MSKHandler = (_event, context, callback) => { + const event: MSKEvent = _event; + str = event.eventSource; + str = event.eventSourceArn; + + const record: MSKRecord = event.records[str][num]; + str = record.topic; + num = record.partition; + num = record.offset; + num = record.timestamp; + str = record.timestampType; + str = record.key; + str = record.value; + + callback(); + callback(new Error()); +}; diff --git a/types/aws-lambda/trigger/msk.d.ts b/types/aws-lambda/trigger/msk.d.ts new file mode 100644 index 0000000000..477eb868ee --- /dev/null +++ b/types/aws-lambda/trigger/msk.d.ts @@ -0,0 +1,21 @@ +import { Handler } from '../handler'; + +export type MSKHandler = Handler; + +export interface MSKRecord { + topic: string; + partition: number; + offset: number; + timestamp: number; + timestampType: 'CREATE_TIME' | 'LOG_APPEND_TIME'; + key: string; + value: string; +} + +export interface MSKEvent { + eventSource: 'aws:kafka'; + eventSourceArn: string; + records: { + [topic: string]: MSKRecord[]; + }; +} diff --git a/types/aws-lambda/tsconfig.json b/types/aws-lambda/tsconfig.json index fe1d54656a..72a77fadfa 100644 --- a/types/aws-lambda/tsconfig.json +++ b/types/aws-lambda/tsconfig.json @@ -35,6 +35,7 @@ "test/s3-tests.ts", "test/ses-tests.ts", "test/sns-tests.ts", - "test/sqs-tests.ts" + "test/sqs-tests.ts", + "test/msk-tests.ts" ] }