آمازون وب سرویسها - نوع رویداد محرک SNS در AWS Lambda؟
من مدتی است که در زمینه توسعه بدون سرور کار میکنم، عمدتاً با AWS، و تازه شروع به آشنایی با الگوهای طراحی انتشار/اشتراک SNS کردهام. من از تایپاسکریپت استفاده میکنم و پشتیبانی از تایپ فوقالعاده است، اما نمیتوانم نوع صحیح رویدادی که از SNS یا یک تریگر S3 به یک Lambda ارسال میشود را پیدا کنم. اینها واقعاً لبههای بین توابع را بسیار ایمن میکنند. در حال حاضر خودم اینترفیسهایم را تعریف میکنم، اما این خستهکننده خواهد شد. به عنوان مثال:
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);
}اگر کسی بتواند مرا به مسیر درست راهنمایی کند، بسیار ممنون خواهم شد.
به سلامتی.
پاسخ شماره ۱
شما میتوانید از SNSEvent از @types/aws-lambda استفاده کنید.
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/56c1ea26b59ed0e4634b1ba27096ab3b90371875/types/aws-lambda/index.d.ts#L211
لطفاً به خاطر داشته باشید که تایپها توسط خود AWS نگهداری نمیشوند، بنابراین ممکن است در برخی موارد بهروز نباشند.