DynamoDBストリームを使用してDynamoDBテーブルの変更をキャプチャしようとしましたが、AWSが提供するJava DynamoDBストリームのKinesisアダプタ。 ScalaアプリでAWS Java SDKを使用しています。AWS Java DynamoDBストリームを使用したDynamoDBストリームの処理Kinesisアダプタ
AWS guideに続き、AWS公開code exampleを実行することから始めました。しかし、Amazonのコードを自分の環境で動かすことに問題があります。私の問題はKinesisClientLibConfiguration
オブジェクトにあります。
例コードでは、KinesisClientLibConfiguration
は、DynamoDBによって提供されるストリームARNで構成されています。
new KinesisClientLibConfiguration("streams-adapter-demo",
streamArn,
streamsCredentials,
"streams-demo-worker")
Iが最初に私ダイナモテーブルから現在のARNを配置することにより、私のScalaのアプリで同様のパターンに続く:
lazy val streamArn = dynamoClient.describeTable(config.tableName)
.getTable.getLatestStreamArn
をそして提供ARNとKinesisClientLibConfiguration
作成:
lazy val kinesisConfig :KinesisClientLibConfiguration =
new KinesisClientLibConfiguration(
"testProcess",
streamArn,
defaultProviderChain,
"testWorker"
).withMaxRecords(1000)
.withRegionName("eu-west-1")
.withMetricsLevel(MetricsLevel.NONE)
.withIdleTimeBetweenReadsInMillis(500)
.withInitialPositionInStream(InitialPositionInStream.TRIM_HORIZON)
提供されたストリームのARNを確認しました。すべてがAWSコンソールに表示されているものと一致します。二番目のパラメータは以下のようにリストされているよう
com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncTask call
SEVERE: Caught exception while sync'ing Kinesis shards and leases
com.amazonaws.services.kinesis.model.AmazonKinesisException: 1 validation
error detected: Value 'arn:aws:dynamodb:eu-west-1:STREAM ARN' at
'streamName' failed to satisfy constraint: Member must satisfy regular
expression pattern: [a-zA-Z0-9_.-]+ (Service: AmazonKinesis; Status Code:
400; Error Code: ValidationException; Request ID:)
意味を成さないKinesisClientLibConfiguration
この上で提供されているマニュアルを見て:私は提供ARNが有効なストリーム名ではないことを示す例外を取得し終わる実行時に
ストリーム名 ARNの記載なし。
KinesisClientLibConfiguration
にはARNに関連するものが見つかりません。私はKinesisストリームではなく、DynamoDBストリームで作業しているので、ストリーム名を見つける方法もわかりません。
公開されているAWSの例で何が分からないのか分かりませんが、かなり古いバージョンのKCLを使用しているようです。私はamazon-kinesis-clientのバージョン1.7.0を使用しています。
ここで例と簡単な説明を追加して、回答を改善してください。たぶん[これを読む](https://stackoverflow.com/help/how-to-answer)は、あなたの答えを改善するのに役立ちます。 – Markus