簡體   English   中英

獲取錯誤 java.lang.IllegalArgumentException

[英]Getting error java.lang.IllegalArgumentException

這是我的代碼。

package com.example.lambda.dynamodbdemo;

import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.PutItemOutcome;
import com.amazonaws.services.dynamodbv2.document.spec.PutItemSpec;
import com.amazonaws.services.dynamodbv2.model.ConditionalCheckFailedException;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class PuttingPersonHandler implements RequestHandler<Person, String> {
    private DynamoDB dynamoDb;
    private String TABLE_NAME = "People";
    private String REGION = "ap-northeast-2";

    @Override
    public String handleRequest(Person input, Context context) {
        this.initDynamoDbClient();

        putData(input);
        return "Saved Successfully!!";
    }

    private void initDynamoDbClient() {
        AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
                .withRegion(REGION).build();
         this.dynamoDb = new DynamoDB(client);
    }

    private PutItemOutcome putData(Person person) 
              throws ConditionalCheckFailedException {
                return this.dynamoDb.getTable(TABLE_NAME)
                  .putItem(
                    new PutItemSpec().withItem(new Item()
                            .withPrimaryKey("id",person.id)
                            .withString("firstName", person.firstName)
                            .withString("lastName", person.lastName)));
            }
}

class Person {
    int id;
    String firstName;
    String lastName;
}

當我嘗試使用此 json 消息在 AWS Lambda 上運行函數時,

{
  "id": "1",
  "firstName": "Min",
  "lastName": "Heo"
}

我收到這個錯誤

輸入值不得為空:java.lang.IllegalArgumentException java.lang.IllegalArgumentException:com.amazonaws.services.dynamodbv2.document.internal.InternalUtils.rejectNullValue(InternalUtils.java:595) 處的輸入值不得為空。 amazonaws.services.dynamodbv2.document.internal.InternalUtils.checkInvalidAttribute(InternalUtils.java:620) 在 com.amazonaws.services.dynamodbv2.document.Item.withString(Item.java:108) 在 com.example.lambda.dynamodbdemo。 PuttingPersonH​​andler.putData(PuttingPersonH​​andler.java:38) at com.example.lambda.dynamodbdemo.PuttingPersonH​​andler.handleRequest(PuttingPersonH​​andler.java:22) at com.example.lambda.dynamodbdemo.PuttingPersonH​​andler.handleRequest(PuttingPersonH​​andler.java:1)

有沒有辦法解決這個錯誤?

來自https://docs.aws.amazon.com/lambda/latest/dg/java-handler-io-type-pojo.html ::

需要 get 和 set 方法才能使 POJO 與 AWS Lambda 的內置 JSON 序列化程序一起使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM