![](/img/trans.png)
[英]Merging multiple JSON files into single JSON file in S3 from AWS Lambda python function
[英]Using a JSON file from S3 in AWS Lambda function (for Alexa)
上下文:我正在使用AWS Lambda函數創建Alexa技能,並將大型JSON文件放入S3中,而不是嘗試將其放入Lambda函數代碼本身中。 我一直在嘗試訪問S3文件的內容,並將其分配給函數中的變量,以便可以在其余代碼中使用它,但是它似乎無法正常工作。 有關相關代碼,以及在打印到控制台時所看到的內容,請參見下文。
Lambda函數:
var handlers = {
'LaunchRequest': function() {
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
data = s3.getObject(myParams, function(err, data) {
if(err) { console.log(err, err.stack);}
else {
console.log('First step');
var fileText = data.Body.toString();
console.log('Second Step' + fileText);
return fileText;
}
});
console.log('Third Step' + data);
}
}
控制台輸出:
Function Logs:
START Version: $LATEST
2017-12-29T23:59:38.585Z Warning: Application ID is not set
2017-12-29T23:59:40.024Z Third Step[object Object]
2017-12-29T23:59:40.159Z First step
2017-12-29T23:59:40.183Z Second Step[{category1: "test1", category2: "test2", category3: "test3"}]
為什么此代碼首先打印“第三步”?
請記住,節點中的所有內容都是異步的。 getObject
將在觸發回調之前返回。 它的返回值無關緊要; 該響應只能由回調訪問。
將這一步移至回調,您將按預期的順序獲得代碼行。
如果您覺得這不太直觀,則可能更喜歡將更簡單的語言(例如Python)用於lambda。 如果您致力於js,則可能會發現async
庫(尤其是waterfall
方法)很有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.