Java AWS SDK Lambda调用失败,因为输入不是Base-64编码的

Java AWS SDK Lambda调用失败,因为输入不是Base-64编码的,java,aws-lambda,aws-sdk-java-2.0,Java,Aws Lambda,Aws Sdk Java 2.0,当我试图调用Lambda函数时(下面是我的代码),我在CloudWatch日志中收到一个错误,说输入不是有效的Base-64字符串 String payload = "xxxxxxxxxxx"; SdkBytes payloadBytes = SdkBytes.fromUtf8String(payload); String routingUri = getRoutingUri(); InvokeRequest invokeRequest = Inv

当我试图调用Lambda函数时(下面是我的代码),我在CloudWatch日志中收到一个错误,说输入不是有效的Base-64字符串

  String payload = "xxxxxxxxxxx";
  
  SdkBytes payloadBytes = SdkBytes.fromUtf8String(payload);

  String routingUri = getRoutingUri();
 
  InvokeRequest invokeRequest = InvokeRequest.builder()
                                   .functionName(routingUri)
                                   .payload(payloadBytes)
                                   .invocationType("RequestResponse")
                                   .build();

  InvokeResponse result = lambdaClient.invoke(invokeRequest);
我尝试了各种方法将请求编码为Base-64,但似乎没有任何效果

  • 我的AWS SDK版本是2.15.14

software.amazon.awssdk
物料清单
2.15.14

请提供帮助。

这里您需要使用java.util包中的Base64.Encoder对字符串进行结束编码

这取决于您在有效负载中设置的数据类型,例如,如果要调用的变量之一是byte[],您可以这样做


public byte[] invokeFunction(byte[] data,String certificate_serial) {
        String dataBase64 = Base64.getUrlEncoder().encodeToString(data);
            // Need a SdkBytes instance for the payload
            SdkBytes payload = SdkBytes.fromUtf8String("{\n" + " \"nameOfTheVariableInTheLambdaYouAreInvoking\": \"" + dataBase64 +  "\" \n" + "}");


字符串有效负载是否与您在“SdkBytes.fromUtf8String(base64Payload)”的下一行中使用的有效负载相同,因为它是一个不同的变量名是相同的。对不起,我给错名字了没问题。这些答案对你有帮助吗?你应该举个例子。
  <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>bom</artifactId>
      <version>2.15.14</version>
  </dependency>

public byte[] invokeFunction(byte[] data,String certificate_serial) {
        String dataBase64 = Base64.getUrlEncoder().encodeToString(data);
            // Need a SdkBytes instance for the payload
            SdkBytes payload = SdkBytes.fromUtf8String("{\n" + " \"nameOfTheVariableInTheLambdaYouAreInvoking\": \"" + dataBase64 +  "\" \n" + "}");