【发布时间】:2020-04-01 19:07:29
【问题描述】:
这是我的代码。
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) 在 com.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) 在 com.example.lambda.dynamodbdemo.PuttingPersonHandler.handleRequest(PuttingPersonHandler.java:22) 在 com.example.lambda.dynamodbdemo.PuttingPersonHandler.handleRequest(PuttingPersonHandler.java:1)
有没有办法解决这个错误?
【问题讨论】:
标签: java amazon-web-services aws-lambda amazon-dynamodb