You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java调用无参AWS Lambda函数并获取返回JSON结果

无参数GET类型Lambda函数Java调用方案

核心问题说明

你当前调用返回中Payload显示Sensitive Data Redacted是因为InvokeResult的toString()方法默认做了脱敏处理,并不会返回真实的载荷数据;且无参数调用不需要传入载荷,调整调用逻辑后即可拿到返回的对象列表。
你已配置的lambda:InvokeFunction、lambda:InvokeAsync权限完全满足同步调用需求,不需要额外调整权限配置。

修正后的调用代码

通用调用方法(支持有参/无参场景)

import com.amazonaws.services.lambda.AWSLambda;
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvocationType;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
import java.nio.charset.StandardCharsets;

public String invokeLambda(String operationName, String payload) {
    AWSLambda lambdaClient = AWSLambdaClientBuilder.defaultClient();
    InvokeRequest request = new InvokeRequest()
            .withInvocationType(InvocationType.RequestResponse)
            .withFunctionName(operationName);
    // 仅当载荷非空时传入,无参数调用直接传null或空字符串即可
    if (payload != null && !payload.isBlank()) {
        request.withPayload(payload);
    }
    InvokeResult invokeResult = lambdaClient.invoke(request);
    // 调用成功判断
    if (invokeResult.getStatusCode() == 200 && invokeResult.getFunctionError() == null) {
        // 将返回的ByteBuffer转为UTF-8编码的JSON字符串
        return new String(invokeResult.getPayload().array(), StandardCharsets.UTF_8);
    }
    throw new RuntimeException("Lambda调用失败,状态码:" + invokeResult.getStatusCode()
            + ",错误信息:" + invokeResult.getFunctionError());
}

无参数GET Lambda调用+对象列表解析示例

这里以FastJSON为例,你也可以替换为Jackson等其他JSON解析库:

import com.alibaba.fastjson.JSON;
import java.util.List;

// 替换为你Lambda返回的实际对象类型
class YourCustomObj {
    // 对应对象字段定义
    private String id;
    private String name;
    // getter、setter省略
}

public List<YourCustomObj> getLambdaObjList() {
    // 无参数调用直接传空载荷
    String resJson = invokeLambda("你的GET Lambda函数名称", null);
    // 将JSON数组转为自定义对象列表
    return JSON.parseArray(resJson, YourCustomObj.class);
}

提示:如果你的GET Lambda没有读取入参的逻辑,即使你传入空JSON字符串"{}"作为载荷,也不会影响函数正常执行。

内容的提问来源于stack exchange,提问作者wild_tola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:06:05