Мы вызываем AWS REST API, используя JavaScript AWS Client Gateway API на сервере nodejs.У нас есть частный API, опубликованный на vpc, который требует API Key в заголовке.Вот кодУ меня есть жесткий API-ключ для тестирования в приведенном ниже сценарии.
var apigClientFactory = require('aws-api-gateway-client').default;
let awsbody = JSON.parse(process.argv[2].split('\\').join('') || '{}');
var apigClient = apigClientFactory.newClient({
invokeUrl: awsbody.endPoint, // REQUIRED
accessKey: awsbody.awsAccessKey, // REQUIRED
secretKey: awsbody.awsSecreteKey, // REQUIRED
region: awsbody.awsRegion,
apiKey: 'vs2i50xvo4',
retryCondition: (err) => {
return err.response && err.response.status === 500;
}
});
var pathParams = awsbody.awsPathParams;
var pathTemplate = awsbody.awsPathTemplate; // '/api/v1/sites'
var method = awsbody.method; // 'POST';
var additionalParams = { queryParams: awsbody.awsAdditionalParams }; //queryParams if any
//var additionalParams = {};
var body = awsbody.requestBody;
var output = {};
apigClient.invokeApi(pathParams, pathTemplate, method, additionalParams, body)
.then(function(result) {
// return JSON.parse(result.data);
output.status = result.response.data.status,
output.message = result.response.data.message,
output.responsecode = result.response.status,
output.responsetext = result.response.statusText;
output.header = result.response.headers;
console.log(output)
}).catch(function(result) {
output.status = result.response.data.status,
output.message = result.response.data.message,
output.responsecode = result.response.status,
output.responsetext = result.response.statusText,
output.header = result.response.headers;
console.log(output)
//console.log("********** Output **************")
//console.log(result)
//return result;
});
При попытке выполнить код выдается ошибка ниже.Не уверен, если что-то не так в коде выше.
{ status: undefined,
message: 'Forbidden',
responsecode: 403,
responsetext: 'Forbidden',
header:
{ server: 'Server',
date: 'Tue, 12 Mar 2019 00:00:37 GMT',
'content-type': 'application/json',
'content-length': '24',
'x-amzn-requestid': 'ddce6604-4459-11e9-a23b-d1e9d6814b3a',
'x-amzn-errortype': 'ForbiddenException',
'x-amz-apigw-id': 'WZt53GORPHcFebA=',
connection: 'close' } }