Adam Coster
Adam Coster

Reputation: 1462

Node AWS SDK v3: Types for `event` and `context` arguments in Lambda functions?

I'm switching to the new Node AWS SDK (v3) to take advantage of its modularity and Typescript support. The first thing I needed to do was to write a Lambda function, but I can't find types to support the handler function signature. The types in the @aws/client-lambda seem to all be related to, well, a client for managing Lambda.

Does the Node SDK have official types for writing Lambdas somewhere? In particular:

interface Event {
  // This could be anything -- a custom structure or something 
  // created by another AWS service, so it makes sense that
  // there isn't a discoverable type for this. There should be
  // corresponding types for each service that can send events
  // to Lambda functions though. Where are these?
}

interface Context {
  // This is provided by Lambda, but I can't find types for it anywhere.
  // Since it's always the same, there should be a type defined somewhere,
  // but where?
}

exports.handler = ( event: Event, context: Context )=>{
  // While `event` could anything so it makes sense to not have a single type available,
  // `context` is always the same thing and should have a type somewhere.
}

Upvotes: 13

Views: 9857

Answers (1)

nirvana124
nirvana124

Reputation: 1033

Use aws-lambda types, it have types for most of the events.

Example handlers:

import { SQSHandler, SNSHandler, APIGatewayProxyHandler } from 'aws-lambda';

export const sqsHandler: SQSHandler = async (event, context) => {
  
}

export const snsHandler: SNSHandler = async (event, context) => {
}

export const apiV2Handler: APIGatewayProxyHandler = async (event, context) => {
  return {
    body: 'Response body',
    statusCode: 200
  }
}

Upvotes: 15

Related Questions