在调用我的AWS Lambda函数时,我在CloudWatch中收到“无法解析clientContext as json”错误(根据AWS Lambda,UNHANDLED错误)。我调查了它是由于内部传递给ClientContext类的非拉丁符号,特别是在android:label属性中的Android Manifest文件中使用非拉丁符号时出现错误。调试后,我看到ClientContext将整个对象正确编码为base64字符串并将其传递给服务器。但是服务器端出了问题。即使在exports.handler函数开始之前,Lambda函数也会失败并显示此错误。要重现这个bug,只需设置android:label =“@ string / app_name”并在你的android清单中设置Этотест,然后使用LambdaInvokerFactory调用任何Lambda函数。
tracelog是:
com.amazonaws.mobileconnectors.lambdainvoker.LambdaFunctionException:
Unhandled at com.amazonaws.mobileconnectors.lambdainvoker.LambdaInvocationHandler.processInvokeResult(LambdaInvocationHandler.java:125)
at com.amazonaws.mobileconnectors.lambdainvoker.LambdaInvocationHandler.invoke(LambdaInvocationHandler.java:64)
at java.lang.reflect.Proxy.invoke(Proxy.java:397)
我们的解决方法是:
Lambda function is called like this:
try {
o = getOrderService(context).closeOrder(this);
} catch (LambdaFunctionException lfe) {
Log.e("closeOrder", "Failed to execute closeOrder", lfe);
}
lambda函数以这种方式声明:
public interface IOrderService {
@LambdaFunction
Order closeOrder(Order order);
}
在AWS端,Lambda函数如下所示:
var AWS = require("aws-sdk");
exports.handler = function(order, context) {
console.log('function closeOrder');
console.log('payload');
console.log(order);
....
}
Device是Android 5.0,locale ru-RU,我正在使用Android Studio 1.5.1。