C# 从Unity向AWS Lambda函数发送输入参数
我正在用C#学习AWS Lambda。我的函数看起来有点像这样:C# 从Unity向AWS Lambda函数发送输入参数,c#,amazon-web-services,unity3d,aws-lambda,C#,Amazon Web Services,Unity3d,Aws Lambda,我正在用C#学习AWS Lambda。我的函数看起来有点像这样: [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace Function_Redeem { public class Function { public FunctionOutput FunctionHandler(F
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespace Function_Redeem
{
public class Function
{
public FunctionOutput FunctionHandler(FunctionInput input, ILambdaContext context)
{
// do work with input
// return FunctionOutput
}
public class FunctionInput
{
public string someData { get; set; }
}
public class FunctionOutput
{
public string someAnswer { get; set; }
}
}
}
使用AWS中的测试按钮以及VisualStudio中的测试功能时,它可以正常工作
现在,我试着从Unity中调用它
首先,我添加了一个API网关触发器,并保留了默认值:
API endpoint: [the url]
API type: HTTP
Authorization: NONE
Cross-origin resource sharing (CORS): No
Enable detailed metrics: No
Method: ANY
Resource path: /FunctionName
Stage: default
然后团结起来,
private static IEnumerator TestFunction(string uri, string data)
{
UnityWebRequest webRequest = UnityWebRequest.Put(uri, data);
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError)
Debug.LogError("Network error: " + webRequest.error);
else
Debug.Log(webRequest.downloadHandler.text);
}
我称之为,数据是
{"someData":"Hello"}
函数调用工作,我知道它正在到达我的函数,但输入数据(即someData
字段)为空。它似乎没有解析我发送的数据,因此FunctionInput
默认为nullsomeData
我缺少什么?因为您使用API网关作为lambda函数的触发器,所以接受作为处理程序的输入参数(而不是FunctionInput)。该字段将包含您的序列化负载
{“someData”:“Hello”}
公共类函数
{
公共函数输出函数处理程序(APIGatewayProxyRequest请求,ILambdaContext上下文)
{var requestBody=JsonConvert.DeserializeObject(request.Body);
//使用输入进行工作
//返回函数输出
}
公共类函数输入
{
公共字符串someData{get;set;}
}
公共类函数输出
{
公共字符串someAnswer{get;set;}
}
}
}
public class Function
{
public FunctionOutput FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
{ var requestBody = JsonConvert.DeserializeObject<FunctionInput>(request.Body);
// do work with input
// return FunctionOutput
}
public class FunctionInput
{
public string someData { get; set; }
}
public class FunctionOutput
{
public string someAnswer { get; set; }
}
}