无法将clientContext解析为json AWS Lambda

时间:2016-03-22 11:22:46

标签: android json amazon-web-services lambda

在调用我的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。

0 个答案:

没有答案