1
我有一個lambda函數將一些數據寫入到我也通過AWS設置的Elasticsearch域中。目前在我的域名訪問策略是隻允許我自己的IP地址與域名通過http正確簽署對aws資源的請求
{"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 } }
}]}
我發現aws4
library簽署http請求的工作。我用它作爲這樣的:
axios(aws4.sign({
host: process.env.ES_ENDPOINT,
method: "post",
url: `https://${process.env.ES_ENDPOINT}/foobot/foobot`,
data,
}))
這是實際工作之前沒有aws4.sign
片,因爲我有ES領域完全開放的,但現在我已經應用於上述IP地址的策略。現在
,我不斷獲得類似這樣的錯誤響應:
我們出的要求籤名您提供的簽名不匹配。檢查您的AWS祕密訪問密鑰和簽名方法。詳細信息請參閱服務文檔。
我還需要做些什麼來正確簽署請求?