AWS Lambda SNS触发事件类型?

时间:2017-12-04 23:50:07

标签: amazon-web-services typescript aws-lambda amazon-sns serverless

我一直在做无服务器开发,主要是AWS,刚刚开始进入SNS pub / sub设计模式。我正在使用typescript并且类型支持很棒,但是我找不到从SNS或S3触发器进入Lambda的事件的正确类型。这些会使功能之间的接缝确实非常安全。目前我正在定义自己的界面,但这会很烦人。 e.g。

interface IAWSSNSTriggerPayload {
  Records: [
    {
      EventSource: string,
      EventVersion: string,
      EventSubscriptionArn: string,
      Sns: {
        Type: string,
        MessageId: string,
        TopicArn: string,
        Subject: string,
        Message: string,
        Timestamp: string,
        SignatureVersion: string,
        Signature: string,
        SigningCertUrl: string,
        UnsubscribeUrl: string,
        MessageAttributes: {},
      }
    }
  ]
}

export const handler = (event: IAWSSNSTriggerPayload, context, cb) => {
  const response = {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Go Serverless Webpack (Typescript) v1.0! Your function executed successfully! And from the SNS',
      input: event,
    }),
  };
  console.log('SNS Received from Lambda Publisher!!!')
  console.log(JSON.stringify(event.Records))
  cb(null, response);
}

如果有人能指出我正确的方向,我会非常感激。

干杯。

1 个答案:

答案 0 :(得分:1)

您可以使用SNSEvent中的@types/aws-lambda

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/aws-lambda/index.d.ts#L98

请注意,AWS不会自行维护这些类型,因此它们可能会在某些情况下不是最新的。