AWS JAVA SDK 生成的代码未传递参数

AWS JAVA SDK Generated code not passing parameters

提问人:krisrr3 提问时间:11/10/2023 更新时间:11/10/2023 访问量:19

问:

我有一些在 AWS 上构建的 API,可以通过 AWS API Gateway 访问它们。目前,它们正由我通过 AWS AMplify 部署的 Web 应用程序使用。

我还构建了一个 CLI,也想从那里调用 API。因此,我转到了 API 网关并生成了允许它工作的代码。无论 Lambda 日志如何显示未传递 2 个参数的请求参数。有人可以帮忙吗

当我在本地运行集成测试时,出现以下异常

com.company.sdk.model.TechResourcesClientException:内部服务器错误 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1811) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1395) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1371) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686) 在 com.amazonaws.client.ClientHandlerImpl.doInvoke(ClientHandlerImpl.java:204) 在 com.amazonaws.client.ClientHandlerImpl.invoke(ClientHandlerImpl.java:185) 在 com.amazonaws.client.ClientHandlerImpl.execute(ClientHandlerImpl.java:93) 在 com.amazonaws.opensdk.protect.client.SdkClientHandler.execute(SdkClientHandler.java:42) 在

我的测试代码如下所示

 TechResourcesClientClientBuilder clientBuilder = TechResourcesClient.builder();


@Test
public void findTechResource() {
    TechResourcesClient client = clientBuilder.connectionConfiguration(new ConnectionConfiguration()
            .maxConnections(100)
            .connectionMaxIdleMillis(1000))
        .timeoutConfiguration(new TimeoutConfiguration()
            .httpRequestTimeout(3000)
            .totalExecutionTimeout(10000)
            .socketTimeout(2000))
        .build();
    
    GetTechresourcesRequest request = new GetTechresourcesRequest("value1", "value2");
    
    
    
    GetTechresourcesResult result = client.getTechresources(request);
    
    
    assertNotNull(result);
    System.out.println("Test 3 passed");
    
    client.shutdown();
}

生成的相关客户端代码如下所示

    @Override
public GetTechresourcesResult getTechresources(GetTechresourcesRequest getTechresourcesRequest) {
    HttpResponseHandler<GetTechresourcesResult> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata().withPayloadJson(true)
            .withHasStreamingSuccessResponse(false), new GetTechresourcesResultJsonUnmarshaller());

    HttpResponseHandler<SdkBaseException> errorResponseHandler = createErrorResponseHandler();

    //RequestConfig requestConfig = null;
    return clientHandler.execute(new ClientExecutionParams<GetTechresourcesRequest, GetTechresourcesResult>()
            .withMarshaller(new GetTechresourcesRequestProtocolMarshaller(protocolFactory)).withResponseHandler(responseHandler)
            .withErrorResponseHandler(errorResponseHandler)
            .withInput(getTechresourcesRequest));
}
aws-lambda 命令行接口 aws-api-gateway

评论


答: 暂无答案