0

对于我们尝试使用的工具,我们在 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
}
4

0 回答 0