从Unity向AWS Lambda功能发送输入参数



我正在用C#学习AWS Lambda。我的函数看起来有点像:

[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中的"测试"按钮以及Visual Studio中的测试功能时,它工作得很好。

现在,我试着从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

然后在Unity,

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);
}

我称之为,data

{"someData":"Hello"}

函数调用工作,我知道它正在到达我的函数,但输入数据(即someData字段(为空。它似乎没有解析我发送的数据,所以FunctionInput默认为空someData

我错过了什么?

由于您使用API网关作为lambda函数的触发器,请接受APIGatewayProxyRequest作为处理程序的输入参数(而不是FunctionInput(。字段Body将具有您的序列化有效载荷{"someData":"Hello"}

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; }
}
}

}

最新更新