मैं सी # में एडब्ल्यूएस लैम्ब्डा फ़ंक्शन लिखने का प्रयास कर रहा हूं। मेरे पास विजुअल स्टूडियो 2015 के लिए एडब्ल्यूएस टूलकिट है। मैंने एडब्ल्यूएस लैम्ब्डा प्रोजेक्ट (नेट कोर) के साथ एक प्रोजेक्ट बनाया है और फिर खाली फ़ंक्शन विकल्प चुना है। - टिप्पणी के रूप में चिह्नित उत्तर उपयोगी ज्ञान था, लेकिन मेरे लिए वास्तविक जवाब नहीं थासी # में अमेज़ॅन लैम्ब्डा - जेसन रीडर अपवाद
अद्यतन & उत्तर 02/24/17: जो मेरा पीछा कोड दे दी है। यह @PavelSafronov की उस टिप्पणी में टिप्पणी थी जिसने चाल बनाई थी। मैं या तो कुछ भी पास नहीं कर रहा था (और त्रुटि प्राप्त कर रहा था) या मुझे लगता है कि यह चाहता था कि मैं जेएसओएन प्रारूप में जानकारी देना चाहता हूं, इसलिए मैं { "input": "Some string" }
दर्ज करूंगा और अभी भी त्रुटि प्राप्त करूंगा। अब जब मैंने अभी "कुछ स्ट्रिंग" में काम किया है तो यह काम करता है। हालांकि, जहां तक मेरा संबंध है, यह एक बग की तरह लगता है। string
डिफ़ॉल्ट रूप से nullable
और अमेज़ॅन द्वारा लिखित कोड है, यह मानता है कि यह input?.ToUpper()
के वर्चुअल द्वारा हो सकता है जहां ?.
null
की जांच कर रहा है।
नोट:मैं LambdaLogger.Log
लाइनों और Constructor
जोड़ा जहाँ मैं हो रही थी देखने के लिए:
using Amazon.Lambda.Core;
using Amazon.Lambda.Serialization.Json;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(JsonSerializer))]
namespace AWSLambdaTest1 {
public class Function {
public Function() {
LambdaLogger.Log("Within the Constructor");
}
public string KevinsTestFunction(string input, ILambdaContext context) {
LambdaLogger.Log("Within the KTF");
return input?.ToUpper();
}
}
}
उत्पादन स्क्रीन और समाधान एक्सप्लोरर कह रहे थे:
Errors in C:\Test Projects\AWSLambda1\AWSLambda1\AWSLambda1.xproj
Unable to resolve 'Amazon.Lambda.Core (>= 1.0.0)' for '.NETCoreApp,Version=v1.0'.
हालांकि, यह असफल होने के बिना एडब्ल्यूएस को निर्मित और प्रकाशित करेगा। मैं भी यह आह्वान कर सकते हैं जो रिटर्न निम्नलिखित - और मेरे मुख्य प्रश्न है:
{
"errorType" : "JsonReaderException",
"errorMessage" : "Unexpected character encountered while parsing value: {. Path '', line 1, position 1.",
"stackTrace" : [
"at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)",
"at Newtonsoft.Json.JsonTextReader.ReadAsString()",
"at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)",
"at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)",
"at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)",
"at Newtonsoft.Json.JsonSerializer.Deserialize[T](JsonReader reader)",
"at lambda_method(Closure , Stream , Stream , ContextInfo)"
]
}
लॉग फ़ाइल से पता चला कि Constructors
लॉग संदेश वहाँ लेकिन नहीं वास्तविक KevingsTestFunction
लॉग संदेश मिला है।
एक तरफ ध्यान दें पर, मैं Unable to resolve 'Amazon.Lambda.Core (>= 1.0.0)' for '.NETCoreApp,Version=v1.0'
त्रुटि प्राप्त करने के लिए जोड़कर दूर जाना मेरी project.json
फ़ाइल में निम्न में सक्षम हूँ:
"runtimes": {
"win10-x64": {},
"win81-x64": {},
"win8-x64": {},
"win7-x64": {}
}
कौन सा अमेज़न पर एक Windows मशीन पर समझ में आता है, इतना नहीं यहाँ । क्या मुझे कुछ अलग runtime(s)
चाहिए?
उस परिवर्तन ने JsonReaderException
अपवाद को नहीं बदला।
मैंने "Linux": {}
जोड़ने की कोशिश की लेकिन इससे कोई बदलाव नहीं हुआ।
मैं भी 1.1.0
को 1.0.0
से NuGet पैकेज Microsoft.NETCore.App
अद्यतन करने के लिए करने की कोशिश की और कहा कि साथ ही और भी वापस 1.0.1
लिए कुछ नहीं किया।
मुझे वह डिफ़ॉल्ट उदाहरण मिलेगा जो वे आपको देंगे, लेकिन मैं वहां गलत हूं। ऐसा लगता है कि Amazon.Lambda.Serialization.Json.JsonSerializer
विशेषता के साथ समस्याएं हैं। क्या NewtonSoft
का उपयोग करना संभव है?
पुन: "हालांकि, जहां तक मुझे चिंतित है, यह एक बग की तरह लगता है। एक स्ट्रिंग डिफ़ॉल्ट रूप से शून्य है ... "- unquoted' null' मान्य JSON है, और यदि यह किसी फ़ंक्शन में पारित होता है जो स्ट्रिंग की अपेक्षा करता है, तो स्ट्रिंग पैरामीटर शून्य होगा। इसे एडब्ल्यूएस लैम्ब्डा कंसोल का उपयोग करके सत्यापित किया जा सकता है और परीक्षण जेएसओएन पेलोड के रूप में 'शून्य' निर्दिष्ट किया जा सकता है, लेकिन * नहीं * एडब्ल्यूएस वीएस टूलकिट, क्योंकि टूलकिट स्ट्रिंग (सुविधा के लिए) के रूप में बिना छेड़छाड़ वाले पाठ का इलाज करता है और इसे लैम्ब्डा को पास करने से पहले उद्धृत करता है । –