2017-05-19 70 views
0

我的AWS Lambda如何對某些外部服務進行API調用並將輸出返回給調用該函數的用戶?NodeJS中針對AWS的子回調Lambda

我的一段代碼看起來是這樣的:

module.exports.oauth_callback = (event, context, callback) => { 
    oauth2.authorizationCode.getToken({ 
    redirect_uri: 'https://' + event.headers.Host + event.requestContext.path 
    }).then(results => { 
     callback(null, {statusCode: 200, body: JSON.stringify(results)}); 
    }); 
}; 

有了這個,我收到500 Internal Error因爲我相信拉姆達函數返回結果之前退出。

編輯病例號,2: 其實在我再添回調像這樣的情況:

return oauth2.authorizationCode.getToken({ 
     code: code, 
    }).then(results => { 
     createFirebaseAccount(results).then(token => { 
     const template = signInFirebaseTemplate(token); 
     return callback(null, { statusCode: 200, body: template.toString() }); 
     }); 
    }); 
}; 

我的變量template有其價值,但接下來的回調永遠不會返回我的函數超時

回答

1

我想你可能需要從getToken()回你的諾言,就像這樣:

module.exports.oauth_callback = (event, context, callback) => { 
    return oauth2.authorizationCode.getToken({ 
     redirect_uri: 'https://' + event.headers.Host + event.requestContext.path 
    }).then(results => { 
     callback(null, {statusCode: 200, body: JSON.stringify(results)}); 
    }); 
}; 

如果d沒有工作,請檢查您的Lambda的監控選項卡下的CloudWatch日誌。

+0

太棒了!謝謝!! – Arkon

+0

我編輯了我的問題,我想知道如何處理第二個回調?我得到一個超時,而它應該是返回 – Arkon

+0

編輯:我可能已經找到http://stackoverflow.com/questions/37791258/lambda-timing-out-after-calling-callback – Arkon