簡體   English   中英

AWS 憑證錯誤:無法從任何提供商加載憑證。 ElasticSearch 服務 node.js

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM