Проблема с методом POST API aws-api-gateway-client

Мы используем aws-api-gateway-client для выполнения всех API aws-rest. Код ниже работал нормально, пока мы не обновили наш сервер с window 2008 до window 2016.

В новом Window Server 2016 приведенный ниже код отлично работает для методов GET / Delete, но для метода POST не работает. Пожалуйста, смотрите ошибку ответа ниже.

Версия пакета Windows 2016 — [email protected]

Версия пакета Windows 2008 — [email protected]

Кто-нибудь сталкивался с подобной проблемой после обновления?

/* ****************************************************************************************************************************************************************************
API NAME : Invoke AWS REST API using node js
Library Used: aws-api-gateway-client
Date : 1/18/2019
Owner: #######
******************************************************************************************************************************************************************************** */

var apigClientFactory = require('aws-api-gateway-client').default;
process.argv.splice(0, 2)
let command = JSON.parse(process.argv.join(" ").split('\\').join('') || '{}');

var output = {};
process.on("exit", function() {
    printOutput();
});

var apigClient = apigClientFactory.newClient({
    invokeUrl: command.endpoint, // REQUIRED
    accessKey: command.access_key, // REQUIRED
    secretKey: command.secret_key, // REQUIRED
    region: command.region, // REQUIRED: The region where the AapiKeyloyed.
    retries: 4,
    retryCondition: (err) => { // OPTIONAL: Callback to further control if request should be retried.  Uses axon-retry plugin.
        return err.response && err.response.status === 500;
    }
});

var pathParams = command.pathParams;
var pathTemplate = command.pathTemplate; // '/api/v1/sites'
var method = command.method; // 'POST';
var additionalParams = command.additionalParams; //queryParams & Headers if any

var body = command.body;

apigClient.invokeApi(pathParams, pathTemplate, method, additionalParams, body)
    .then(function(result) {
        var statuscode = result.status;
        var statustext = result.statusText;
        var job_id = result.headers['location'];
        var responseBody = result.data;
        output.statuscode = statuscode,
            output.statustext = statustext,
            output.job_id = job_id,
            output.responseBody = responseBody;
        //output.result = result;

    }).catch(function(error) {
        if (error.response != undefined) {
            var statuscode = error.response.status;
            var statustext = error.response.statusText;
            var responseBody = error.response.data;
            output.statuscode = statuscode,
                output.statustext = statustext,
                output.responseBody = responseBody;
            //output.response = error;
        } else {
            var statuscode = error.code;
            var statustext = error.errno;
            output.statuscode = statuscode;
            output.statustext = statustext;
            //output.error = error;
        }
    });


function printOutput() {
    console.log(JSON.stringify(output));
}

Ошибка ответа

{"statuscode":403,"statustext":"Forbidden","responseBody":{"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.\n\nThe Canonical String for this request should have been\n'POST\n<>\n"}}

person snowcoder    schedule 27.04.2020    source источник


Ответы (1)


Я удалил [email protected] и установил рабочую версию модуля NPM

>npm install [email protected]
person snowcoder    schedule 27.04.2020