从C#中的另一个lambda函数调用aws Lambda函数

时间:2017-12-05 12:18:47

标签: c# .net asp.net-mvc aws-lambda

我是使用c#的aws lambda函数的新手。我有两个lambda函数,我想从第二个函数调用一个lambda函数,我使用的代码如下:

public string Function1(JObject input)
{
    string param = input["param"].ToString();
    string param1 = input["param1"].ToString();
    return param.ToUpper()+" "+param1.ToUpper();
}


public string Function2()
{
    try
    {
        using (AmazonLambdaClient client = new AmazonLambdaClient(some region))
        {
            JObject ob = new JObject();
            ob.Add("param", "hello");
            ob.Add("param1", "Lambda");
            var request = new InvokeRequest
            {
                FunctionName = "Function1",
                Payload = ob.ToString()
            };
            var response = client.Invoke(request);
            string result;
            using (var sr = new StreamReader(response.Payload))
            {
                return result = sr.ReadToEnd();
            }
        }
    }
    catch (Exception ex) 
    {
        return ex.Message.ToString();
    }
}

我收到如下错误:

{   “errorType”:“TypeLoadException”,   “errorMessage”:“无法从程序集'System,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes'加载类型'System.Net.HttpStatusCode'。”,   “堆栈跟踪”: [     “在AWSLambdaApp.Function.Function2()”,     “在lambda_method(Closure,Stream,Stream,ContextInfo)”   ] }

在功能2应用程序中,我添加了“AWSSDK.Core”和“AWSSDK.Lambda”dll的引用。 谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为您必须重新考虑您的体系结构。请记住,lambda函数具有局限性(执行时间和CPU使用率)。

在这种情况下,最好使用aws step function。在这种情况下,您可以使用“责任链”模式。 Lambda函数将解耦,并且更容易支持它们。结果将是类似的东西:

AWS Step Function Example

此外,aws步进功能具有很多功能,例如条件,并行执行,服务员等。它为您提供了用于改进应用程序的强大工具。