似乎无法将对象上传到Lambda中的S3.一切都在当地很好.日志中没有错误可以显示出错的地方......
代码如下:
console.log('Loading function');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = function(event, context) {
//console.log(JSON.stringify(event, null, 2));
var s3 = new AWS.S3();
var param = {Bucket: 'flow-logs', Key: 'test-lambda-x', Body: 'me me me'};
console.log("s3");
s3.upload(param, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
console.log('done');
context.done();
};
Run Code Online (Sandbox Code Playgroud)
运行成功没有错误,但似乎没有调用s3.upload中的回调.桶中没有对象被创建.
通过授予完全访问权限以及在本地测试,已验证的IAM角色权限不是问题.
产量
START RequestId: d4847fdb-160c-11e5-8a8c-b555b123e14d
2015-06-18T22:53:29.750Z d4847fdb-160c-11e5-8a8c-b555b123e14d s3
2015-06-18T22:53:30.271Z d4847fdb-160c-11e5-8a8c-b555b123e14d done
END RequestId: d4847fdb-160c-11e5-8a8c-b555b123e14d
Run Code Online (Sandbox Code Playgroud) 我正在写一个小文本文件(~500B),但奇怪的是,如果我使用fs.writeFile(..)(或WriteableStream的write/end方法)等异步方法编写,我会得到一个空文件.
这有效:
var scanInfo = getScanInfo( core ); // returns several lines delimited by \r\n
fs.writeFileSync( filename, scanInfo, 'ascii' );
Run Code Online (Sandbox Code Playgroud)
这会创建空文件,回调函数永远不会产生任何输出:
var scanInfo = getScanInfo( core );
scanInfo.push('') ;
scanInfo = scanInfo.join(DOS_CRLF);
fs.writeFile( filename, scanInfo, 'ascii', function ( err ) {
if(err) { console.error('Failed'); console.error(err) ; }
else { console.log('OK'); }
});
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似的帖子,但在我发现问题是其他的东西(调用另一个函数返回内容)但我的内容是一个文本字符串(通过调试验证).
类似的帖子:fs.writeFile()不返回回调
平台> Win8.1 x64
NodeJS> x64 0.12.0
PS使用实际编写文件的函数的应用程序使用回调以"plain nodejs"样式编写,但由于它变得更复杂,我使用Q和Q-IO重写了主处理流.所以现在处理开始如下:
(在主模块中)
var qfs = require('q-io/fs') ;
...
qfs.read( configFile )
.then( doSomeConfig )
.then( function( config ) …Run Code Online (Sandbox Code Playgroud)