Error during sending a signed http request to ElasticSearch

Offen
#188 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
25/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
aws, cpp, elasticsearch
Bereich
api, cloud, security

Rechercherichtung

Beginne mit der im Issue gezeigten Request-Konstruktion und dem Aufruf von Aws::Client::AWSAuthV4Signer::SignRequest und stelle anschließend den Request anhand der konfigurierten Region und der Umgebungsanmeldedaten gegen Elasticsearch nach. Vergleiche die Signiereingaben mit der Antwort des Dienstes; abgeschlossen ist die Untersuchung, wenn ein Bibliotheksfehler mit einer minimalen Reproduktion bestätigt oder eine Korrektur an der Konfiguration des Aufrufers dokumentiert wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

hey,
I am running into an error while making a httprequest to Elastic Search The error is

The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method

Following is the code. Any pointers to bug in my code or library would be appreciated.

`invocation_response my_handler(invocation_request const& request)
{
 ClientConfiguration config;
 config.region = Aws::Environment::GetEnv("AWS_REGION");
 config.caFile = "/etc/pki/tls/certs/ca-bundle.crt";
 auto credentialsProvider = Aws::MakeShared<Aws::Auth::EnvironmentAWSCredentialsProvider>("es");

 auto client = CreateHttpClient(config);
 auto httpRequest = CreateHttpRequest(URL, HttpMethod::HTTP_GET, 
Aws::Utils::Stream::DefaultResponseStreamFactoryMethod);

 httpRequest->SetContentType("application/json");

 nlohmann::json query1 = {};
 query1.emplace("size", 25);

 std::shared_ptr<Aws::StringStream> sstream = make_shared<Aws::StringStream>();
 *sstream << query1;
 httpRequest->AddContentBody(sstream);
 Aws::Client::AWSAuthV4Signer signer(credentialsProvider, "es", config.region); 
 auto req =  httpRequest.get();
 signer.SignRequest(*req);
 auto outcome = client->MakeRequest(httpRequest);
 if (outcome->GetResponseCode() == HttpResponseCode::OK) {
    cout << "SUCCESS" << endl;
 } else {
    // print the response from the http request
    cout << "ERROR" << endl;
    cout << outcome->GetResponseBody().rdbuf() << endl;
    cout << outcome->GetResponseCode() << endl;

 }`

Vorherrschende Sprache
C++
Sterne
465
Forks
98
Ø Merge
1 Std. 16 Min.
Gemergte PRs (30 T.)
2

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus awslabs/aws-lambda-cpp

Alle Issues in awslabs/aws-lambda-cpp

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.