java - 从 ruby​​ SDK 使用参数调用 Java 中的 AWS Lambda

标签 java ruby amazon-web-services aws-lambda

我正在尝试使用 Ruby SDK v3 调用 AWS Lambda 函数

    Aws::Lambda::Client.new.invoke_async(function_name: ENV["FUNCTION_NAME"],
                                         invoke_args: { mas: 'que caralho' }.to_json)

它会按预期被调用,但如果我打印参数:

    public void handleRequest(InputStream input, OutputStream output, Context context) {
        String input_string = String.valueOf(input.read());
        input.close();
        logger.info("Received input: " + input_string);
        ...

它们总是以“123”的形式出现。我的电话中没有 123 D:

我还遇到了 payload 参数,但我放在那里的内容并不重要,它提示这是意外的

ArgumentError: unexpected value at params[:payload]

请问有什么帮助吗?

最佳答案

input.read() 命令一次返回一个字符

这是来自 Example: Using Stream for Handler Input/Output (Java) - AWS Lambda 的示例代码:

package example;

import java.io.InputStream;
import java.io.OutputStream;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.amazonaws.services.lambda.runtime.Context; 

public class Hello implements RequestStreamHandler{
    public void handler(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
        int letter;
        while((letter = inputStream.read()) != -1)
        {
            outputStream.write(Character.toUpperCase(letter));
        }
    }
}

因此,您的代码仅读取一个字符,并且它以整数形式传输。 ascii 中的 123{ 字符,它是传递给函数的 JSON 的开头。

因此,您需要继续阅读,直到返回 -1

或者,您可以使用取自 AWS Lambda Function Handler in Java - AWS Lambda 的正常方法定义。 :

outputType handler-name(inputType input, Context context) {
   ...
}

这将让您将输入作为一个字符串读取,而不必循环遍历流。

关于java - 从 ruby​​ SDK 使用参数调用 Java 中的 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56611026/

相关文章:

java - 如何将音频(.mp3/.wav 等)数据批量导入 Anki 面板?

java - Hibernate:直接在bean中设置Id和调用load()或get()方法的区别?

ruby - 如何从 Ruby HEREDOC 中删除前导空白字符?

ruby - Graphite 烯 : ruby bundler install fails

python - Flask 应用程序在确认 Flask 安装后,elasticbeanstalk 中没有名为 Flask 的模块错误

java - Netbeans IDE 7.4 ctrl+空格错误

ruby - 如何在 ruby​​ 中混合必需参数和可选参数?

amazon-web-services - 识别 ElasticSearch 集群中使用的 EC2 实例

amazon-web-services - 如何在数百个 AWS 实例上拆分数据文件?

JavaFX:控制台登录 TextArea + 多线程和任务