我刚刚使用 Java SDK (v1.8) 启动并运行 DynamoDB。我使用 AWS 控制台创建了一个非常简单的表。我的表有一个主哈希键,它是一个字符串(无范围)。我已将单个项目与 4 个其他属性值(所有字符串)一起放入表中。
我正在为表中的该项目发出一个简单的 Java 请求,但它以ResourceNotFoundException
. 我绝对肯定我提供的表名是正确的,我用来查询项目的主哈希键的名称也是正确的。表状态列在 AWS 控制台中Active
,我也可以看到该项目及其值。
这是我得到的错误:
Requested resource not found (Service: AmazonDynamoDB; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: ...)
我尝试了以下方法(使用dynamodbv2
类的版本):
Map<String, AttributeValue> key = new HashMap<String, AttributeValue>();
key.put(PRIMARY_KEY, new AttributeValue().withS(value));
GetItemRequest request = new GetItemRequest()
.withTableName(TABLE_NAME)
.withKey(key);
GetItemResult result = client.getItem(request);
我也尝试过使用所有这些类的旧版本,已弃用,如下所示:
GetItemRequest request = new GetItemRequest()
.withTableName(TABLE_NAME)
.withKey(new Key().withHashKeyElement(new AttributeValue().withS(value)));
GetItemResult result = client.getItem(request);
……但结果是一样的。
我的理解ResourceNotFoundException
是,这意味着引用的表名或属性无效,事实并非如此。如果表状态太早,也可以抛出Creating
,但我的表是Active
.