gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:46:31 24 4
gpt4 key购买 nike

我正在尝试使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com