AWS Lambda HTTPS Request - проект - PullRequest
0 голосов
/ 29 мая 2018

Я немного новичок в AWS LAmbda и пытаюсь сделать http-запрос к серверу через функцию AWS Lambda.Я использовал код проекта AWS HTTPS и внес изменения только в переменную option (см. Код ниже).

const https = require('https');

let headers = {
    'Authorization': 'ApiKey {key}'
};

let options = {
    url: 'https://myds.io/api/external/patients/events/medications/',
    headers: headers
};

exports.handler = (event, context, callback) => {
    const req = https.request(options, (res) => {
        let body = '';
        console.log('Status:', res.statusCode);
        console.log('Headers:', JSON.stringify(res.headers));
        res.setEncoding('utf8');
        res.on('data', (chunk) => body += chunk);
        res.on('end', () => {
            console.log('Successfully processed HTTPS response');
            // If we know it's JSON, parse it
            if (res.headers['content-type'] === 'application/json') {
                body = JSON.parse(body);
            }
            callback(null, body);
        });
    });
    req.on('error', callback);
    req.write(JSON.stringify(event.data));
    req.end();
};

Когда я пытаюсь запустить этот код, я получаю следующую ошибку.Я не могу понять, где проблема и что не так с синтаксисом.Прошу вас помочь мне.

enter image description here

Просто для вызова этой лямбда-функции.Я использую следующую тестовую функцию.

enter image description here

Ниже приводится результат выполнения.

Response:
{
  "errorMessage": "connect ECONNREFUSED 127.0.0.1:443",
  "errorType": "Error",
  "stackTrace": [
    "Object._errnoException (util.js:1022:11)",
    "_exceptionWithHostPort (util.js:1044:20)",
    "TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)"
  ]
}

Request ID:
"0fae1df6-6351-11e8-9741-a3dc748f359b"

Function Logs:
START RequestId: 0fae1df6-6351-11e8-9741-a3dc748f359b Version: $LATEST
2018-05-29T15:00:44.205Z    0fae1df6-6351-11e8-9741-a3dc748f359b    {"errorMessage":"connect ECONNREFUSED 127.0.0.1:443","errorType":"Error","stackTrace":["Object._errnoException (util.js:1022:11)","_exceptionWithHostPort (util.js:1044:20)","TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)"]}
END RequestId: 0fae1df6-6351-11e8-9741-a3dc748f359b
REPORT RequestId: 0fae1df6-6351-11e8-9741-a3dc748f359b  Duration: 35.27 ms  Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 22 MB  

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Проблема решена.Я сделал некоторые изменения в синтаксисе, и теперь он работает нормально.

'use strict'

const https = require('https');

let options = {
    host : 'myds.io',
    path:  '/api/external/patients/events/medications/',
    headers: {
        'Authorization': 'ApiKey *******'
        },
};

exports.handler = (event, context, callback) => {
    const req = https.request(options, (res) => {
        let body = '';
        console.log('Status:', res.statusCode);
        console.log('Headers:', JSON.stringify(res.headers));
        res.setEncoding('utf8');
        res.on('data', (chunk) => body += chunk);
        res.on('end', () => {
            console.log('Successfully processed HTTPS response');
            // If we know it's JSON, parse it
            if (res.headers['content-type'] === 'application/json') {
                body = JSON.parse(body);
            }
            callback(null, body);
        });
    });
    req.on('error', callback);
    req.write(JSON.stringify(event.data));
    req.end();
};
0 голосов
/ 29 мая 2018

В req.write(JSON.stringify(event.data)); он ищет event.data, но у вашего тестового события нет клавиши data, а просто key1, key2, key3.

Попробуйте изменить тестовое событие на что-то похожее на следующее:

{
   "data": "something"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...