[英]AWS Credentials error: could not load credentials from any providers. ElasticSearch Service node.js
我遇到了一個我認為應該發布在互聯網上的問題。 我可能不知道內部問題,但我想我有一個解決方案。 無論如何問題:
我在 AWS 上托管了一個 ElasticSearch 服務,我正在嘗試在本地訪問該服務,或者通過我在 AWS 上托管的 ec2 服務訪問該服務。
但是當我嘗試在本地時,我得到了這個錯誤: Request Timeout after 30000ms
當我在我的 ec2 上嘗試時,我收到此錯誤: AWS Credentials error: Could not load credentials from any providers
這是我設置憑據並進行查詢的方式:
const AWS = require('aws-sdk');
const connectionClass = require('http-aws-es');
const elasticsearch = require('elasticsearch');
try {
var elasticClient = new elasticsearch.Client({
host: "https://some-elastic.us-east-1.es.amazonaws.com/",
log: 'error',
connectionClass: connectionClass,
amazonES: {
region: 'us-east-1',
credentials: new AWS.Credentials('id', 'key')
}
});
elasticClient.indices.delete({
index: 'foo',
}).then(function (resp) {
console.log("Successful query!");
console.log(JSON.stringify(resp, null, 4));
}, function (err) {
console.trace(err.message);
});
} catch (err) {
console.log(err);
} finally {
}
因此,如前所述,我不斷收到此錯誤。 我嘗試了許多其他變體來傳遞憑據。
我對該問題的模糊理解是,在 amazonES object 中設置的credentials
被忽略,或者該區域沒有與憑據一起傳遞。 因此 AWS 不知道在哪里搜索憑證。
無論如何,這是解決方案:
AWS.config.update({
secretAccessKey: 'key',
accessKeyId: 'id',
region: 'your region ex. us-east-1'
});
var elasticClient = new elasticsearch.Client({
host: "https://some-elastic.us-east-1.es.amazonaws.com/",
log: 'error',
connectionClass: connectionClass,
amazonES: {
credentials: new AWS.EnvironmentCredentials('AWS'),
}
});
這是一個有點錯誤的情況。 我在網上的任何地方都找不到這個解決方案,我希望它能幫助將來遇到同樣錯誤的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.