私は AWS Elastic search サービスを使用しており、Node.js ラッパーを作成しました (ECS ドッキング コンテナー内で実行されます)。IAM ロールは、Elastic search とのシングルトン接続を作成するために使用されます。
すべてのリクエストの前に AWS.config.credentials.needsRefresh() をチェックしてセッション トークンを更新しようとしていますが、セッションの有効期限が切れた後でも常に true を返します。明らかに、AWS は 403 エラーで不平を言っています。どんなアイデアでも大歓迎です。
var AWS = require('aws-sdk');
var config = require('config');
var connectionClass = require('http-aws-es');
var elasticsearch = require('elasticsearch');
AWS.config.getCredentials(function() {
AWS.config.update({
credentials: new AWS.Credentials(AWS.config.credentials.accessKeyId,AWS.config.credentials.secretAccessKey,AWS.config.credentials.sessionToken),
region: 'us-east-1'
});
}
)
var client = new elasticsearch.Client({
host: `${config.get('elasticSearch.host')}`,
log: 'debug',
connectionClass: connectionClass,
amazonES: {
credentials: new AWS.EnvironmentCredentials('AWS')
}
});
module.exports = client;