我刚刚使用Java SDK(v1.8)启动并运行DynamoDB.我使用AWS控制台创建了一个非常简单的表.我的表有一个主哈希键,它是一个String(没有范围).我已经将一个项目放入表中,其中包含4个其他属性值(所有字符串).
我正在为表中的那个项目做一个简单的Java请求,但它失败了ResourceNotFoundException.我绝对肯定我提供的表名是正确的,因为我用来查询该项的主哈希键的名称.表状态在AWS控制台中列出,Active我也可以看到该项及其值.
这是我得到的错误:
Requested resource not found (Service: AmazonDynamoDB; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: ...)
Run Code Online (Sandbox Code Playgroud)
我尝试了以下(使用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);
Run Code Online (Sandbox Code Playgroud)
我也尝试使用所有这些类的较旧的,已弃用的版本,如下所示:
GetItemRequest request = new GetItemRequest()
.withTableName(TABLE_NAME)
.withKey(new Key().withHashKeyElement(new AttributeValue().withS(value)));
GetItemResult result = client.getItem(request);
Run Code Online (Sandbox Code Playgroud)
......但结果却是一样的.
我ResourceNotFoundException对它的理解是它表示引用的表名或属性是无效的,但实际情况并非如此.如果表在Creating状态太早,也可以抛出它,但我的表是Active.