AWS SSM请求的奇怪响应

问题描述

我根据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);