问题描述
我根据marcin的建议重构了代码,因此我在调用SSM来检索特定值(这在awsUtils.js文件中):
<div class="home-cards">
<a href="">Test</a>
</div>
而我是通过NodeJS lambda调用它的:
const AWS = require("aws-sdk");
const ssm = new AWS.SSM({region: process.env.AWS_REGION});
async function executeParameterCall(ssmParameter) {
const params = {
Name: ssmParameter,WithDecryption: false
};
console.debug("params",params);
var request = await ssm.getParameter(params).promise();
return request.Parameter.Value;
}
module.exports.getSSMValue = async (ssmParameter) => {
return = await executeParameterCall(ssmParameter);
}
我希望已经回到我的lambda:
const someValue = awsUtils.getSSMValue(process.env.ACCOUNT_VALUE);
但是我得到的是:
json
{
"Parameter": {
"Name": "/dev/account/someValue","Type": "String","Value": "{\"key\": \"foo\"\}","Version": 1,"LastModifiedDate": "2020-10-08T21:04:17.451000-05:00","ARN": "arn:aws:ssm:us-east-2:038017203494:parameter/dev/account/someValue","DataType": "text"
}
}
我已经确认如果我通过CLI调用SSM,则会返回正确的值。
那么,在这个AWS请求中或者在导致此响应的代码结构中我缺少什么吗?
解决方法
我认为您错误地调用了getParameter
方法。 Here是应如何调用的示例。
具体而言,以下示例在您的情况下可能会有用:
const ssmRequest = await ssm.getParameter({Name: ssmParamter,WithDecryption: true}).promise();
console.debug("ssmResponse",ssmRequest.Parameter.Value);