[英]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。 PuttingPersonHandler.putData(PuttingPersonHandler.java:38) at com.example.lambda.dynamodbdemo.PuttingPersonHandler.handleRequest(PuttingPersonHandler.java:22) at com.example.lambda.dynamodbdemo.PuttingPersonHandler.handleRequest(PuttingPersonHandler.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.