将DynamoDb与Sping Boot 配合使用以存储数据时遇到问题。
下面是一个错误提示:无法对不存在的表执行操作(服务:亚马逊发电机DBv 2;状态代码:400;错误代码:未找到资源异常;请求编号:(请参阅“”)
我已经在Windows计算机上使用以下命令启动了DynamoDb的本地示例
java -Djava.库.路径=./动态数据库本地库-jar动态数据库本地. jar-端口8001 -共享数据库
已创建DynamoDBMapper以与数据库交互
@Bean
public DynamoDBMapper mapper() {
return new DynamoDBMapper(amazonDynamoDBConfig());
}
public AmazonDynamoDB amazonDynamoDBConfig() {
return AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(new
AwsClientBuilder.EndpointConfiguration(awsDynamoDBEndPoint, awsRegion))
.withCredentials(new AWSStaticCredentialsProvider(new
BasicAWSCredentials(awsAccessKey, awsSecretKey)))
.build();
}
并使用@Autowiring调用Map器
@Autowired
private DynamoDBMapper mapper;
当我尝试使用
mapper.save人);
它会给出错误消息无法对不存在的表执行操作
请给予我一些想法,我错过了这里的技巧。提前感谢。
2条答案
按热度按时间nwlls2ji1#
根本原因可能是aws-cli和应用程序使用不同的aws配置文件(身份证明和区域)。当aws-cli和应用程序连接到dynamodb local时,将创建不同的数据库文件并使用不同的数据库文件。
请使用以下方法进行调试。
1.您必须使用sharedDB来启动您的Docker示例。
docker run -p 8000:8000 -v $(pwd)/local/dynamodb:/data/ amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath /data
1.请检查您创建的aws配置文件(
aws_access_key_id
&aws_secret_access_key
)。在您的应用程序中使用这些相同的值来连接到docker dynamoDB示例。ttcibm8c2#
在Person.java(Model类)中检查表名。DynamoDB的表名区分大小写
或者