嘗試使用Kinesis Producer庫添加用戶記錄時發生InvalidSignatureException。 AWS_JAVA_SDK_VERSION = 26年1月10日
AWS_KINESIS_PRODUCER_VERSION = 0.10.1
ERROR:AWS:添加記錄時出現InvalidSignature異常
PutRecords失敗:{ 「__type」: 「InvalidSignatureException」, 「消息」:「我們計算出的請求籤名不匹配您提供的簽名。請檢查您的AWS訪問密鑰和簽名方法。
SCALA KINESIS生產者CODE
private val configuration: KinesisProducerConfiguration = new KinesisProducerConfiguration
val credentialsProvider: AWSCredentialsProvider = AwsUtil.getAwsCredentials(config.awsAccessKey, config.awsSecretKey)
configuration.setCredentialsProvider(credentialsProvider)
configuration.setRecordMaxBufferedTime(config.timeLimit)
configuration.setAggregationMaxCount(1)
configuration.setRegion(config.streamRegion)
configuration.setMetricsLevel("none")
private val kinesisProducer = new KinesisProducer(configuration)
kinesisProducer.addUserRecord(streamName, key, eventBytes)`
上述代碼無效。但是我可以通過終端和KinesisClient的aws cli在下面指定的代碼中將記錄添加到kinesis流中。
private def createKinesisClient = {
val accessKey = config.awsAccessKey
val secretKey = config.awsSecretKey
val credentialsProvider: AWSCredentialsProvider = AwsUtil.getAwsCredentials(accessKey, secretKey)
val client = new AmazonKinesisClient(credentialsProvider)
client.setEndpoint(config.streamEndpoint)
client
}
難道你檢查你的Scala代碼是否獲得Config對象?一般來說,使用EC2角色更好,即使在配置中也不提供顯式憑據。 – Guy
如果你打算寫你自己的請求,我發佈了一個圖書館來解決這個問題:https://github.com/ticofab/aws-request-signer。祝你好運! – ticofab
謝謝你們。最後,一旦將aws-sdk和kinesis-library更新到更高版本,問題就會得到解決。 – Ninja