0

私は DynamoDB を初めて使用し、実行中の JVM 内にローカル インスタンスを持っていますが、次のように定義されたインデックスを作成しようとすると、

GlobalSecondaryIndexUpdate stockIndex = new GlobalSecondaryIndexUpdate()
        .withCreate(new CreateGlobalSecondaryIndexAction()
                .withIndexName("StockIndex")
                .withKeySchema(new KeySchemaElement().withAttributeName("stock").withKeyType(KeyType.RANGE), // Partition key
                        new KeySchemaElement().withAttributeName("date").withKeyType(KeyType.RANGE)) // Compound key?
                .withProjection(new Projection().withProjectionType(projectionType)));

次のような不明な内部エラーが発生します。

Caused by: com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The request processing has failed because of an unknown error, exception or failure. (Service: AmazonDynamoDBv2; Status Code: 500; Error Code: InternalFailure; Request ID: dccfbf27-2e33-463c-b36e-97a432f4cd6b)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1588)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1258)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1030)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:742)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:716)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:2089)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:2065)
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeUpdateTable(AmazonDynamoDBClient.java:1921)

GSI を作成しようとしたとき。インデックスを間違って定義していますか、それとも DynamoDB Local でサポートされていませんか?

2018 年 7 月 30 日更新:

私は以下を使用してテストしました:

// StockIndex
GlobalSecondaryIndexUpdate stockIndex = new GlobalSecondaryIndexUpdate()
        .withCreate(new CreateGlobalSecondaryIndexAction()
                .withIndexName("StockIndex")
                .withKeySchema(
                        new KeySchemaElement().withAttributeName("stock").withKeyType(KeyType.HASH)) // Partition key
                        new KeySchemaElement().withAttributeName("date").withKeyType(KeyType.RANGE)) // Compound key?
                .withProjection(new Projection().withProjectionType(ProjectionType.ALL)));

RANGE キーをオンにしない場合と同様dateですが、どちらの場合も同じ漠然とし た結果が得られましたInternalFailure。GSI は DynamoDB ローカル インスタンスでサポートされていないのではないかと思います (ただし、使用上の注意にはセカンダリ インデックスについてはまったく言及されていません) 。

4

2 に答える 2

1

可能です。あなたが得ているエラーはあなたが持っている原因だと推測しています

.withKeyType(KeyType.RANGE)

2 回指定します。範囲/ソート キーにできる属性は 1 つだけで、もう 1 つはハッシュ キーにする必要があります。

于 2018-07-26T01:26:53.333 に答える