【发布时间】:2019-04-30 19:54:41
【问题描述】:
我有几个通过 SNS 一起工作的 lambda。一个 lambda 接收请求并将数据发送到 SNS。另一个 lambda 订阅了 SNS。在 JavaScript 中很容易做到,因为传入的消息只是一个 JS 对象。现在我将 lambda 重写为 Java。我正在寻找要在处理程序中使用的类型。
这是 lambda 的样子。 SNSMessage 是类型的占位符。
public class ArchiveRequestHandler implements RequestHandler<SNSMessage?, Void> {
@Override public Void handleRequest(SNSMessage? input, Context context) {
// do something with the message
return null;
}
}
示例消息如下所示:
{
"Records": [
{
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:aws:sns:EXAMPLE",
"EventSource": "aws:sns",
"Sns": {
"SignatureVersion": "1",
"Timestamp": "1970-01-01T00:00:00.000Z",
"Signature": "EXAMPLE",
"SigningCertUrl": "EXAMPLE",
"MessageId": "1234567-ee98-5cb9-9903-4c221d41eb5e",
"Message": "Hello from SNS!",
"MessageAttributes": {
"Test": {
"Type": "String",
"Value": "TestString"
},
"TestBinary": {
"Type": "Binary",
"Value": "TestBinary"
}
},
"Type": "Notification",
"UnsubscribeUrl": "EXAMPLE",
"TopicArn": "arn:aws:sns:EXAMPLE",
"Subject": "TestInvoke"
}
}
]
}
现在我确信我可以创建自己的类型来解析它,但我希望有一种更标准的方法来做这件事。但是,我在 lambda 或 SNS SDK 依赖项中没有找到任何看起来像这个对象的东西。
【问题讨论】:
-
我自己没试过,但是这个答案有用吗? stackoverflow.com/a/32768081/611819
-
docs.aws.amazon.com/lambda/latest/dg/….. 请参考此示例从 SNSevent 对象获取消息
-
@notionquest 谢谢!所以答案是pojo有一个支持库...
标签: java amazon-web-services aws-lambda