如何从 Nodejs 访问 aws 参数存储值并在以后使用它

我有一个要求,我想访问参数存储值,然后稍后使用它。这就是我正在做的:


var options = {

    Name: 'SecretAccessKey_temp',

    WithDecryption: true

};


var secreretAccesKeyParam = ssm.getParameter(options).promise();


secreretAccesKeyParam.then(function (data, err) {

    if (err) console.log(err, err.stack);

    else {

        const secretAccessKey = data.Parameter.Value

        console.log(secretAccessKey)

   

       

    }

});

这给了我价值,但如果我想访问此之外的SecretAccessKey变量,它会给我“未定义”。谁能帮我在这个函数之外访问这个secretAccessKey变量吗?


泛舟湖上清波郎朗
浏览 87回答 2
2回答

白板的微信

由于您的变量secreretAccesKeyParam是一个承诺,因此您将无法访问secretAccessKey承诺处理程序(例如)的上下文(例如function (data, err) {...})。根据承诺的定义这样做:const myPromise = new Promise((resolve, reject) => {  setTimeout(() => {    resolve('foo');  }, 300);});var myRes = 'bar';myPromise.then(dunction (data, err) {  myRes = data;  console.log(myRes); // executed asynchronously});console.log(data); // executed sychronously so printed first. myRes value is still 'bar'.会给你输出:'bar''foo'如果您想像同步一样处理事情,您可能想要做的是使用异步函数。var options = {    Name: 'SecretAccessKey_temp',    WithDecryption: true};var secreretAccesKeyParam = ssm.getParameter(options).promise();(async () => {  try {    const data = await secreretAccesKeyParam;  } catch (err) {    console.log(err, err.stack);  }  const secretAccessKey = data.Parameter.Value;  console.log(secretAccessKey);  ... // any action with your secret access key})(); 或者,如果您稍后已经在使用处理程序函数:let _secretAccessKey;const getSecretAccessKey = async () => {  if (!_secretAccessKey) {    try {      const data = await secreretAccesKeyParam;    } catch (err) {      console.log(err, err.stack);      return null;    }    _secretAccessKey = data.Parameter.Value;  }  return Promise.resolve(_secretAccessKey);}...async function mySuperHandler() {  const secretAccessKey = await getSecretAccessKey();  // do something with the secret}

慕仙森

将其设置为 env 怎么样?我目前使用此方法,但您必须确保在使用它之前设置 env 。secreretAccesKeyParam.then(function (data, err) {  if (err) console.log(err, err.stack);  else {    process.env.secretAccessKey = data.Parameter.Value;    const secretAccessKey = process.env.secretAccessKey;    console.log(secretAccessKey);  }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript