AWS:添加记录时出现InvalidSignature异常

时间:2015-12-09 13:44:07

标签: scala amazon-web-services aws-sdk aws-cli amazon-kinesis

尝试使用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
  }

1 个答案:

答案 0 :(得分:0)

这是因为您的VM / PC /服务器时钟可能会偏斜。

如果您正在运行ubuntu,请尝试更新系统时间:

sudo ntpdate ntp.ubuntu.com

如果您在Mac上使用docker-machine,则可以使用以下命令解决:

docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'