对于我们尝试使用的工具,我们在 node.js 中有一个非常小的程序(我对 node.js 的了解为 0)。该工具需要一些配置,安全性要求我们不要将这些配置作为环境变量,而是从某种商店获取它们,所以我们曾经拥有:
const loggerConfig = {
url: process.env.SPLUNK_HEC_URL,
token: process.env.SPLUNK_HEC_TOKEN,
};
const SplunkLogger = require('./lib/mysplunklogger');
const zlib = require('zlib');
const logger = new SplunkLogger(loggerConfig);
exports.handler = (event, context, callback) => {
console.log('Received event:', JSON.stringify(event, null, 2));
// Do stuff
}
不再允许,它需要使用一个方法(来自 aws 参数存储),稍后我们希望仍然像以前一样使用这个 loggerConfig 变量。我尝试过的是以下内容,但我相信由于 javascript 的异步性质,这永远不会奏效。我不知道如何完成这项工作,并希望有人可以帮助我重写它以使作业正常进行。
const loggerConfig = {
url: process.env.SPLUNK_HEC_URL,
token: getParameterFromSystemManager(process.env.SPLUNK_PARAM)
};
function getParameterFromSystemManager(parameter) {
const AWS = require('aws-sdk');
AWS.config.update({ region: process.env.AWS_REGION });
const SSM = require('aws-sdk/clients/ssm');
const ssm = new SSM()
let param;
ssm.getParameter({Name: parameter,WithDecryption: true}, (err, data) => {
console.log('error = %o', err);
console.log('raw data = %o', data);
param = data;
});
return param
}
const SplunkLogger = require('./lib/mysplunklogger');
const zlib = require('zlib');
const logger = new SplunkLogger(loggerConfig);
exports.handler = (event, context, callback) => {
console.log('Received event:', JSON.stringify(event, null, 2));
// Do stuff
}