4
CコードからDynamoDB低レベルAPIを呼び出しようとしました。これは私のコードDynamoDB低レベルAPIを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;
}
である。しかし
HTTP/1.1 400 Bad Request
のように実行している間、それは私は主に二つの問題に直面したエラーを生成します。
- 私はaws_access_key_idとaws_secret_access_keyを持っています。これら2つの資格情報を使用して承認(SignedHeaders &署名)を作成する方法は?
- ダイナモクエリメソッドの "X-Amz-Target"の変更方法は?
あなたはまだこの回答をお探しですか? – Taterhead
私にとっては難しいです。私はAPIゲートウェイと一緒に移動したので。あなたがこれを解決するなら、ダイナモのクエリ速度を向上させることができます。私のプログラムではより良いパフォーマンスを提供します。 –