【发布时间】:2014-10-11 11:57:19
【问题描述】:
我刚刚开始使用 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。
【问题讨论】:
标签: java amazon-web-services amazon-dynamodb aws-sdk