2015-12-09 5 views
2

InvalidSignatureException se produit lors de la tentative d'ajout d'un enregistrement utilisateur à l'aide de la bibliothèque Kinesis Producer. AWS_JAVA_SDK_VERSION = 1.10.26
AWS_KINESIS_PRODUCER_VERSION = 0.10.1

erreur:AWS: exception InvalidSignature lors de l'ajout de l'enregistrement

PutRecords a échoué: { "__type": "InvalidSignatureException", "message": "La signature de la demande, nous avons calculé ne correspond pas à la signature que vous avez fourni. Vérifiez votre méthode AWS accès secrète et la signature.

SCALA KINESIS PRODUCTEUR 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)` 

Le code ci-dessus ne fonctionne pas. Mais il est possible pour moi d'ajouter des enregistrements à kinesis via aws cli à partir du terminal et KinesisClient dans le code qui est spécifié ci-dessous.

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

Avez vous vérifiez le code de votre scala obtient l'objet Config droit? En général, il est préférable d'utiliser les rôles EC2 et de ne pas fournir d'informations d'identification explicites, même en configuration. – Guy

+0

Avez-vous recours à l'écriture de votre propre demande, j'ai publié une bibliothèque pour répondre à cette question: https://github.com/ticofab/aws-request-signer. Bonne chance! – ticofab

+0

Merci les gars. Enfin, le problème est résolu une fois la mise à jour aws-sdk et kinesis-library vers la version supérieure. – Ninja

Répondre

0

Cela se produit parce que votre horloge VM/PC/Serveur peut être faussée.

Si vous ubuntu en cours d'exécution, essayez de mettre à jour l'heure du système:

sudo ntpdate ntp.ubuntu.com

Si vous utilisez docker-machine sur Mac, vous pouvez résoudre avec cette commande:

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