2017-01-16 1 views
1

私はAWSのラムダ関数から別のサーバーに(DaynamoDBからフェッチ)いくつかのJSONデータを送信しようとしていますが、スクリプト内のURLを与えながら:ラムダスクリプトによって別のサーバーにJSONデータをポストする方法

'use strict'; 

const https = require('https'); 

exports.handler = (event, context, callback) => { 

     var options = { 
     hostname: 'https://www.corecomputersystem.com', 
     path: '/getSyncData.php', 
     port : 432, 
     method: 'POST', 
     headers: { 
      'Content-Type': 'application/json', 
     } 
    }; 
    event.Records.forEach((record) => { 

     console.log(record.eventID); 
     console.log(record.eventName); 
     console.log('DynamoDB Record: %j', record.dynamodb); 
     var res = record.dynamodb; 

     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(); 
    //context.succeed(); 
    }); 

};

それは

{ 
    "errorMessage": "getaddrinfo ENOTFOUND https://www.corecomputersystem.com https://www.corecomputersystem.com:432", 
    "errorType": "Error", 
    "stackTrace": [ 
    "errnoException (dns.js:26:10)", 
    "GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:77:26)" 
    ] 
} 
を次のエラーをスローだと私は context.succeed()のコメントを解除した場合、エラーがない、私はエラーを識別するための助けが必要。

答えて

0

ホスト名変数からhttps://を削除します。

var options = { 
    hostname: 'www.corecomputersystem.com', 
    path: '/getSyncData.php', 
    port : 432, 
    method: 'POST', 
    headers: { 
     'Content-Type': 'application/json', 
} 

docsを参照してください。

+0

が、私はそれを削除しようとしたが、再び新しいエラーは、私が言ってしまった:{ "にErrorMessage": "ECONNREFUSED 173.236.36.194:432を接続する"、 "ERRORTYPE": "エラー"、 "スタックトレース":[ 「オブジェクト(TCPConnectWrap.afterConnect [as oncomplete](net.js:1062:14))」を参照してください。「export._exceptionWithHostPort(util.js:893:20)」、 ] } – Ashish

+0

私はこれを試してみましたが、再び、それはエラーを与える開始しました:{ "にErrorMessage": "ECONNREFUSED 173.236.36.194:432を接続する"、 "ERRORTYPE": "エラー"、 "スタックトレース":[ を " Object.e xports._errnoException(util.js:870:11)」、 "exports._exceptionWithHostPort(util.js:893:20)"、 "TCPConnectWrap.afterConnect(net.js:1062:14)[onCompleteのような" ] } – Ashish

+0

あなたは本当にポートを持っていますか?それは標準のhttpsポートではありません。 httpsは443 – at0mzk

0

@ at0mzkと言うと、ホスト名は決してポート番号をとらないので、[http、https、smb、nfs]://のような接頭辞はホスト名が要求されている場所でエラーを投げます。

http://localhost ===のはlocalhost:80)HTTPSを行う前に

0

は、我々が使用することができます要求:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 

は、それが承認を要求しません。

0

我々はHTTPを要求する前にオプションでキーを追加することができます別の方法:

rejectUnauthorized: false 

それは自己asigned証明書を要求しません。

これは私が探していたものです。

関連する問題