尝试使用Kinesis Producer库添加用户记录时发生InvalidSignatureException。
AWS_JAVA_SDK_VERSION = 26年1月10日
AWS_KINESIS_PRODUCER_VERSION = 0.10.1
的错误:
PutRecords失败:{“_ _ type”:“InvalidSignatureException”,“message”:“我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。
SCALA KINESIS生产者代码
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)`
以上代码无效。但是我可以通过终端中的aws cli和下面指定的代码中的KinesisClient将记录添加到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
}
答案 0 :(得分:0)
这是因为您的VM / PC /服务器时钟可能会偏斜。
如果您正在运行ubuntu,请尝试更新系统时间:
sudo ntpdate ntp.ubuntu.com
如果您在Mac上使用docker-machine
,则可以使用以下命令解决:
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'