Reputation: 1462
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:
context
argument?event
argument, is there a list somewhere of the events that can come from other AWS services and their corresponding types?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
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