2017-08-02 88 views
0

我正在尋找適用於NodeJS的AWS Lambda處理函數的完整文檔,尤其是結果對象。 如何設置標題,餅乾...我還有其他什麼選項等等?AWS Lambda回調API在哪裏記錄?

只有回調原型似乎被記錄下來,而不是它的參數。 http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html#nodejs-prog-model-handler-callback

AWS文檔這麼亂...

+1

你的問題似乎是關於API網關對Lambda回調參數的解釋。從Lambda的角度來看,正確的答案是「與JSON.stringify兼容的任何對象」。 –

+0

的確,我正在使用API​​網關。那麼如何將lambda響應轉換爲純HTTP響應呢? – vcarel

+2

這就是@SteveE。下面試圖說明。 API網關具有「集成響應」和「方法響應」的概念,使您能夠將所有頭髮拉出來,直到它開始出現,然後開始弄清楚他們在想什麼,然後纔開始有意義。大部分行爲並不是來自特定的回調結構,而是從您從回調對象內容中獲取的元素構建的,以構建所需的響應。要麼,要麼我做錯了。我同意,這部分文檔很模糊。我會看看我能否確定一些事情。 –

回答

0

This blog post解釋它:

示例代碼是這樣的:

'use strict'; 
exports.handler = function(event, context) { 
    console.log("{'Cookie':event['Cookie']}"); 
    var date = new Date(); 

    // Get Unix milliseconds at current time plus 365 days 
    date.setTime(+ date + (365 \* 86400000)); //24 \* 60 \* 60 \* 100 

    // Generate a random cookie string 
    var cookieVal = Math.random().toString(36).substring(7); 

    var cookieString = "myCookie="+cookieVal+"; domain=my.domain; 
     expires="+date.toGMTString()+";"; 

    context.done(null, {"Cookie": cookieString}); 

}; 

如果使用回調,那麼該響應需要是沿線:

callback(null, { 
    "statusCode": 200, 
    "headers": { "Set-Cookie": myCookie=cookieVal; domain=my.domain; 
     expires="+date.toGMTString()+"; }, 
    "body": "..." 
}); 

但你也需要更新APIG允許Cookie響應按照博客文章:

API網關控制檯,轉到GET方法頁,選擇方法響應。展開默認的200 HTTP狀態,並選擇添加標題。添加名爲「Set-Cookie」的新標頭。

在GET方法頁面上,選擇集成響應。在默認的200 HTTP狀態的標題 映射部分下,選擇鉛筆 圖標編輯「Set-Cookie」標題。在映射值部分, 地說:

integration.response.body.Cookie

確保通過選擇檢查圖標,保存標題!

APIG當前有一個限制,即每個標題只能在響應中存在一次。這意味着一次只能設置一個cookie。

+0

感謝您的答案,但這是脫離主題。實際上,你可能會返回一個「Set-Cookie」頭文件,它非常簡單(參見https://stackoverflow.com/questions/45111150/setting-cookie-in-http-response-header-from-aws- λ-節點-JS)。 – vcarel

+0

我需要回調API的全面文檔(或者這可能在API網關中有記錄,但我不能在那裏)。我對教程,指南和博客文章不感興趣。 – vcarel