Ich habe eine Lambda-Funktion, die einige Daten in eine Elasticsearch Domain schreibt, die ich auch über AWS eingerichtet habe. Derzeit ist die Zugriffsrichtlinie auf meiner Domain ist nur meine eigene IP-Adresse zu ermöglichen, mit der DomäneProper Signierung von Anfragen an aws Ressourcen über http
{"Version": "2012-10-17", "Statement": [{
"Effect": "Allow", "Principal": {"AWS": "*"},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:$ACCOUNT:domain/DOMAIN/*",
"Condition": { "IpAddress": { "aws:SourceIp": $MYIP } }
}]}
ich die aws4
library Anfragen nach Unterzeichnung http zu arbeiten. Ich verwende es als solches:
axios(aws4.sign({
host: process.env.ES_ENDPOINT,
method: "post",
url: `https://${process.env.ES_ENDPOINT}/foobot/foobot`,
data,
}))
Diese tatsächlich arbeiten vor, ohne aws4.sign
Stück, wie ich die ES-Domäne vollständig geöffnet hatte, aber jetzt habe ich die IP-Adressrichtlinie oben angewandt.
Nun, ich ständig einen Fehler wie diese als Antwort erhalten:
Die Anfrage Unterschrift wir die Signatur nicht übereinstimmt berechnet wird Ihnen zur Verfügung gestellt. Überprüfen Sie den geheimen AWS-Zugriffsschlüssel und die Signaturmethode. Weitere Informationen finden Sie in der Servicedokumentation.
Gibt es noch etwas, was ich tun muss, um die Anfrage richtig zu unterschreiben?