feral icon indicating copy to clipboard operation
feral copied to clipboard

Create models for the myriad of AWS Lambda event types

Open armanbilge opened this issue 3 years ago • 2 comments

For feral-lambda to be useful for the "zoo" of Lambda types available on AWS, we need to provide models for the various events (aka "triggers") and responses used by each of these lambdas. These will live in the feral-lambda-events module.

We are currently sourcing them from the Java and JavaScript/TypeScript implementations.

The TypeScript definitions are especially important, because they are the definitive representation of these events as "plain old JavaScript objects" which is isomorphic to their JSON representation. Therefore, our models should match them exactly in name, structure, etc. in order for parsing to work correctly.

For an example of this, see the existing events: https://github.com/typelevel/feral/blob/main/lambda/shared/src/main/scala/feral/lambda/events/

  • [ ] ActiveMQEvent
  • [ ] APIGatewayCustomAuthorizerEvent
  • [x] APIGatewayProxyRequestEvent https://github.com/typelevel/feral/pull/409
  • [x] APIGatewayProxyResponseEvent https://github.com/typelevel/feral/pull/409
  • [ ] APIGatewayV2CustomAuthorizerEvent
  • [x] APIGatewayV2HTTPEvent
  • [x] APIGatewayV2HTTPResponse
  • [ ] APIGatewayV2WebSocketEvent https://github.com/typelevel/feral/pull/476
  • [ ] APIGatewayV2WebSocketResponse
  • [ ] ApplicationLoadBalancerRequestEvent
  • [ ] ApplicationLoadBalancerResponseEvent
  • [ ] AppSyncLambdaAuthorizerEvent
  • [ ] AppSyncLambdaAuthorizerResponse
  • [ ] CloudFormationCustomResourceEvent
  • [ ] CloudFrontEvent
  • [ ] CloudWatchLogsEvent
  • [ ] CodeCommitEvent
  • [ ] CognitoEvent
  • [ ] CognitoUserPoolCreateAuthChallengeEvent
  • [ ] CognitoUserPoolCustomMessageEvent
  • [ ] CognitoUserPoolDefineAuthChallengeEvent
  • [ ] CognitoUserPoolEvent
  • [ ] CognitoUserPoolMigrateUserEvent
  • [ ] CognitoUserPoolPostAuthenticationEvent
  • [ ] CognitoUserPoolPostConfirmationEvent
  • [ ] CognitoUserPoolPreAuthenticationEvent
  • [ ] CognitoUserPoolPreSignUpEvent
  • [ ] CognitoUserPoolPreTokenGenerationEvent
  • [ ] CognitoUserPoolVerifyAuthChallengeResponseEvent
  • [ ] ConfigEvent
  • [ ] ConnectEvent
  • [x] DynamodbEvent https://github.com/typelevel/feral/pull/68
  • [ ] IoTButtonEvent
  • [ ] KafkaEvent
  • [ ] KinesisAnalyticsFirehoseInputPreprocessingEvent
  • [ ] KinesisAnalyticsInputPreprocessingResponse
  • [ ] KinesisAnalyticsOutputDeliveryEvent
  • [ ] KinesisAnalyticsOutputDeliveryResponse
  • [ ] KinesisAnalyticsStreamsInputPreprocessingEvent
  • [x] KinesisEvent https://github.com/typelevel/feral/pull/75
  • [ ] KinesisFirehoseEvent
  • [ ] LambdaDestinationEvent
  • [ ] LexEvent
  • [ ] RabbitMQEvent
  • [x] S3BatchEvent https://github.com/typelevel/feral/pull/231
  • [x] S3BatchResponse https://github.com/typelevel/feral/pull/231
  • [x] S3Event https://github.com/typelevel/feral/pull/354
  • [ ] ScheduledEvent
  • [ ] SecretsManagerRotationEvent
  • [ ] SimpleIAMPolicyResponse
  • [x] SNSEvent https://github.com/typelevel/feral/pull/195
  • [x] SQSEvent https://github.com/typelevel/feral/pull/58
  • [ ] any more?

armanbilge avatar Nov 12 '21 16:11 armanbilge

@armanbilge we talked on discord, for the purposes of project management I'll be looking at the SQS event first.

fredshonorio avatar Nov 15 '21 12:11 fredshonorio

@bpholt I've again arrived at the opinion that the CloudFormationCustomResourceEvent should probably join the rest of the events in this module 😅 these are my assumptions:

  1. Not every event requires its own special lambda (like we have for http4s or CloudFormation). So this justifies the existence of the feral-lambda-events module, to host these events.
  2. For consistency/least surprise, if some events are in feral-lambda-events, they should all be there :)

I could be wrong about (1). When we figure out how to deploy these things, maybe each type of Lambda will have to be treated differently anyway? I hope not.

armanbilge avatar Nov 15 '21 15:11 armanbilge