2017-12-21 14 views
1

パスワードのリセットメールを送信するエンドポイントにhttpsリクエストを送信するAWSラムダを作成しました。ローカルでラムダを実行すると、すべてが期待どおりに実行され、受信トレイにメールが届きますが、ノードコードをアップロードしてAWSコンソールでラムダを実行すると、投稿リクエストを作成する時点で次のエラーが発生します:AWSラムダエラーノードhttpsリクエスト

Error: getaddrinfo ENOTFOUND myfakedomain.com myfakedomain.com:443 
(たSuperAgentノードモジュール使用)、HTTPS要求を行う私のラムダ関数は次のようになり

function resetPassword(intentRequest, callback) { 
    const emailAddress = intentRequest.currentIntent.slots.EmailAddress; 
    console.log(`emailAddress is: ${emailAddress}`); 
     request 
     .post('https://myfakedomain.com:443/passwordreset', emailAddress) 
     .set({ 'Content-Type': 'text/plain' }) 
     .end((resp) => { 
      console.log('response was: ' + resp); 
     }); 

    callback(close(intentRequest.sessionAttributes, 'Fulfilled', 
    { contentType: 'PlainText', content: `Thanks, a reset password link has been sent to ${emailAddress}.` })); 
} 

AWS経由で私のラムダを実行しているこのエラーのいずれかの特定の理由があります?誰かがそれを打つことができるようにリセットパスワードエンドポイントが開いています。私はまた、私の投稿要求の最初からhttps://を削除しようとしましたが、運はありません。私はそれがエラーのロギングも非常に最小限に抑えることはないと思う!

ご協力いただきありがとうございます。

答えて

1

デフォルトでは、AWS VPCリソースは、EC2(サーバー)インスタンスであっても、ラムダ関数であっても、インターネットにアクセスすることはできません。したがって、ラムダ機能がVPCベースの場合、インターネットアクセスが設定されたVPCに関連付ける必要があります。

これを実行していない場合は、ほぼ確実に問題になります。

関連するAWSのドキュメントへの以下のリンクのカップルがあります: http://docs.aws.amazon.com/lambda/latest/dg/vpc.html https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/

+0

これは正しくありません。ラムダ関数は、デフォルトでインターネットにアクセスできます。 VPC内のラムダ機能は、NATゲートウェイを使用していない限りインターネットにアクセスできません。 – dashmug

+0

ダスマグ、ありがとう。更新しました。 –