DynamoDB Streams 异常

4

我想尝试实现AWS的Dynamodb Streams Java示例。我多次收到以下两个错误,然后程序按预期完成。有什么想法是什么原因?

[error] c.a.s.k.c.l.w.ShardSyncTask - Caught exception while sync'ing Kinesis shards and leases
com.amazonaws.AmazonServiceException: null (Service: AmazonDynamoDBStreams; Status Code: 400; Error Code: UnknownOperationException; Request ID: VEPKVGT3GN8BSBP3A74LOEVIPVVV4KQNSO5AEMVJF66Q9ASUAAJG)
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreamsClient.invoke(AmazonDynamoDBStreamsClient.java:638) ~[aws-java-sdk-dynamodb-1.10.20.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreamsClient.describeStream(AmazonDynamoDBStreamsClient.java:363) ~[aws-java-sdk-dynamodb-1.10.20.jar:na]
[error] c.a.s.d.s.m.AmazonServiceExceptionTransformer - Could not transform a DynamoDB AmazonServiceException to a compatible Kinesis exception
com.amazonaws.AmazonServiceException: null (Service: AmazonDynamoDBStreams; Status Code: 400; Error Code: UnknownOperationException; Request ID: JLVS3D8Q363LGGI60O42LDULBFVV4KQNSO5AEMVJF66Q9ASUAAJG)
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310) ~[aws-java-sdk-core-1.10.20.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreamsClient.invoke(AmazonDynamoDBStreamsClient.java:638) ~[aws-java-sdk-dynamodb-1.10.20.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreamsClient.describeStream(AmazonDynamoDBStreamsClient.java:363) ~[aws-java-sdk-dynamodb-1.10.20.jar:na]

那么describeStream会导致UnknownOperationException吗?也许您正在使用过时的aws sdk版本吗?编辑:不是,1.10.20是最新版本。 - zapl
2个回答

3
我们遇到了同样的问题,后来发现我们在设置中缺少了“region”(地区),明确设置地区后问题得以解决。
对于dynamodb-local而言,您不需要设置地区,在使用它时可以不加地区参数。但是,当您将其部署到AWS上时,您将会遇到以上错误提示。

0

@mikeal-sundberg提供的答案对我没有用,最终我发现这是由于AWS和Dynamo本地提供的端点之间存在差异。

使用Dynamo本地,您可以将标准Dynamo客户端以及AmazonDynamoDBStreams客户端使用相同的端点。在部署时,AmazonDynamoDBStreams客户端需要流特定的端点,例如https://streams.dynamodb.eu-west-1.amazonaws.com


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接