node.js - AWS凭证错误:无法从任何提供程序加载凭证。 ElasticSearch服务node.js

标签 node.js amazon-web-services elasticsearch

我有一个问题,我认为应该在互联网上发布。我可能不知道内部问题,但我认为我有解决方案。无论如何问题:

我正在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对象中设置的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'),
        }
    });

这有点 buggy 的情况。我无法在任何在线位置找到此解决方案,希望它可以帮助将来遇到相同错误的人。

关于node.js - AWS凭证错误:无法从任何提供程序加载凭证。 ElasticSearch服务node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61179618/

相关文章:

node.js - 如果尚未将变量设置为环境变量,则设置变量

mysql - AWS DMS - MYSQL 上的 CDC 作为源端点的微秒级精度

amazon-web-services - AWS Cloudformation IF-ELSE

json - ElasticSearch 对字段的多次精确搜索未返回结果

javascript - Protractor 如何使用 npm 属性读取器从属性文件中调用具有多个套件值的键

javascript - Raven 不使用 Sentry 中的源映射来处理 TS/JS 代码

elasticsearch - 如何根据日期范围查找某一字段的不同值? Elasticsearch 6.3

mongodb - 高级Elasticsearch查询

javascript - 使用 require 从并行 Mean.js 项目加载模型文件时出现 Mongoose 错误

amazon-web-services - Nginx URL限制502网关