2012-07-04 2 views
2

qui sont les en-têtes nécessaires dont nous avons besoin d'envoyer dans l'en-tête en utilisant repos DynamoDB apiDynamoDB amazone par le repos api

'x-amz-date': 'Mon, 16 Jan 2012 17:50:52 GMT', 
'x-amzn-authorization': 'AWS3 AWSAccessKeyId=TemporaryAccessKeyID,Algorithm=HmacSHA256,SignedHeaders=Host;x-amz-date;x-amz-target;x-amz-security-token,Signature=*Signature Value*=', 
'Date': 'Mon, 31 Oct 2011 17:49:52 GMT', 
'x-amz-target': 'DynamoDB_20111205.GetItem', 
'x-amz-security-token': '*Token Value*', 
'Content-Type': 'application/x-amz-json-1.0', 
'Content-Length': '135', 
'Connection': 'Keep-Alive', 
'User-Agent': 'aws-sdk-java/1.2.10 Windows_7/6.1 Java_HotSpot(TM)_64-Bit_Server_VM/20.2-b06', 
} 

puis-je savoir quels sont tous les paramètres nécessaires dont nous avons besoin de passer par http reste api pour dynamo ... J'ai besoin de récupérer les données de la base de données dynamodb ??? Quelqu'un peut-il suggérer ce que sont les en-têtes requis? link

Répondre

1

Cela ne fait pas encore un an que la question est posée alors j'espère qu'il n'est pas trop tard pour y répondre. :-)

L'un des meilleurs moyens de savoir quel champ d'en-tête HTTP est requis est d'utiliser AWS SDK. Cette approche est recommandée par AWS. (Selon un post sur le forum par un gars @AWS) Vous pouvez:

  1. Activer le journal DEBUG pour le paquet de AWS (par exemple com.amazonaws) et en option client Apache HTTP (par exemple org.apache.http) pour voir. Une façon simple de configurer log4j. Personnellement, j'utilise slf4j-over-JCL, puis configurer logback.xml
  2. Écrire un programme simple qui demande DynamoDB, assurez-vous que le résultat est correct, et regardez le journal

Par exemple, dans un ListTables demande, les en-têtes suivants sont utilisés:

  • Content-Length
  • Content-type
  • hôte
  • User-Agent
  • X-Amz-Date
  • X-Amz-cible

Remarquez que l'en-tête HTTP doit être capitalisé. Le journal montre également la signature qui est en minuscules. "Content-Length" et "User-Agent" sont facultatifs, les autres champs sont obligatoires. "Content-Type" peut être "application/json" si vous n'aimez pas "x-amz-json-1.0".

Il me semble qu'il y a deux parties difficiles à implémenter notre propre client REST, l'une est de faire la signature correcte, l'autre est d'obtenir les en-têtes correctement. Pour la partie signature, AWS fournit une suite de tests qui nous permet de vérifier notre implémentation de signature.