C#lambdasをサポートしている最近リリースされたSDKを使用しています。ラムダAが公開するSNSトピック設定があります。それはすべて正常に動作しています。今私はその同じ話題に登録されているラムダBを持っています。ラムダAの発火時ラムダBが起動され、JSONメッセージが渡されます。問題はJSONをAmazon.SimpleNotificationService.Util.Messageタイプに解析することができないことです。AWS LambdaのSNSメッセージオブジェクトを解析します。
私はこのJSONを与えました。
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:.......",
"Sns": {
"Type": "Notification",
"MessageId": "ce4a1d7c-c50d-51ea-bfe8-4dc1078795fe",
"TopicArn": "arn:.......",
"Subject": null,
"Message": "test queue",
"Timestamp": "2016-12-04T07:05:46.709Z",
"SignatureVersion": "1",
"Signature": "<mysighere>",
"SigningCertUrl": "<pem url here>",
"UnsubscribeUrl": "<unsub url here>",
"MessageAttributes": {}
}
}
]
}
だから私は
var j = Newtonsoft.Json.Linq.JObject.Parse(messageText.ToString());
var sns = jsonData["Records"][0]["Sns"];
Console.Write($"sns object: {sns}");
var message = Message.ParseMessage(sns.ToString());
。私はちょうど「SNS」ノードを与えない、このコード(messageTextが型である「オブジェクト」パラメータを行うことを試みた。しかしParseMessageはエラーをスローします呼び出しますSigningCertUrlフィールドがnullであると言っています。クラウドウォッチにJSONを書き込んだので、すべてのフィールドに値が設定されているのがわかります。私はそのすべてのプロパティをnullしようとしました。
は 'Console.Write($ "SNSオブジェクト:{} SNS")の出力何;?' –
大きなオブジェクトのsnsノードでオブジェクト値を保持しています...... { "タイプ": "通知"、 "MessageId": "ce4a1d7c-c50d-51ea-bfe8-4dc1078795fe"、 "TopicArn" : "arn:......."、 "件名":null、 "メッセージ": "テストキュー"、 "タイムスタンプ": "2016-12-04T07:05:46.709Z"、 " SignatureVersion ":" 1 "、 "署名 ":"""、 "MessageAttributes":{} } "" SigningCertUrl ":" "、 " UnsubscribeUrl " –
ToddB