J'ai essayé d'appeler les API de bas niveau DynamoDB à partir du code C. Ceci est mon codeErreur lors de l'appel des API de bas niveau DynamoDB à partir du code C
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
struct curl_slist *chunk = NULL;
chunk = curl_slist_append(chunk, "Host: dynamodb.us-east-1.amazonaws.com;");
chunk = curl_slist_append(chunk, "Accept-Encoding: identity;");
chunk = curl_slist_append(chunk, "Content-Length: 53;");
chunk = curl_slist_append(chunk, "User-Agent: CustomApp42;");
chunk = curl_slist_append(chunk, "Content-Type: application/x-amz-json-1.0;");
chunk = curl_slist_append(chunk, "Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<signature>;");
chunk = curl_slist_append(chunk, "X-Amz-Date: 4.4.2016 ;");
chunk = curl_slist_append(chunk, "X-Amz-Target: DynamoDB_20120810.GetItem;");
res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
curl_easy_setopt(curl, CURLOPT_URL, "dynamodb.us-east-1.amazonaws.com");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"TableName\":\"Pets\",\"Key\":{\"AnimalType\":{\"S\": \"Dog\"},\"Name\": {\"S\": \"Fido\"}}}");
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
/* free the custom headers */
curl_slist_free_all(chunk);
}
return 0;
}
Mais il produit une erreur lors de l'exécution comme
HTTP/1.1 400 Bad Request
je faisais face principalement deux questions.
- J'ai aws_access_key_id et aws_secret_access_key. Comment créer une autorisation (SignedHeaders & Signature) en utilisant ces deux informations d'identification?
- Comment modifier "X-Amz-Target" pour la méthode de requête dynamo?
Vous êtes toujours à la recherche d'une réponse? – Taterhead
c'est difficile pour moi. parce que je me suis déplacé avec la passerelle api. Si vous donnez une solution pour cela, je peux améliorer ma vitesse de requête dynamo. il offre également de meilleures performances à mon programme. –