我嘗試寫入aws lambda實例的文件系統失敗。 The docs say標準lambda實例在/tmp/
處具有512mb的可用空間。然而,我的本地機器上運行下面的代碼是不工作的拉姆達實例:如何寫入aws lambda實例的文件系統?
var fs = require('fs');
fs.writeFile("/tmp/test.txt", "testing", function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
在匿名的回調函數的代碼是從來沒有得到所謂的拉姆達實例。任何人都有這樣的成功嗎?非常感謝你的幫助。
這很有可能是一個相關的question。 s3代碼和我想用fs回調函數做什麼之間會有某種衝突嗎?下面的代碼是當前正在運行的代碼。
console.log('Loading function');
var aws = require('aws-sdk');
var s3 = new aws.S3({ apiVersion: '2006-03-01' });
var fs = require('fs');
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
// Get the object from the event and show its content type
var bucket = event.Records[0].s3.bucket.name;
var key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
var params = {
Bucket: bucket,
Key: key
};
s3.getObject(params, function(err, data) {
if (err) {
console.log(err);
var message = "Error getting object " + key + " from bucket " + bucket +
". Make sure they exist and your bucket is in the same region as this function.";
console.log(message);
context.fail(message);
} else {
//console.log("DATA: " + data.Body.toString());
fs.writeFile("/tmp/test.csv", "testing", function (err) {
if(err) {
context.failed("writeToTmp Failed " + err);
} else {
context.succeed("writeFile succeeded");
}
});
}
});
};
我對aws-lambda的理解是,代碼在響應某個「事件」時運行 - 是代碼「響應」甚至被觸發的「事件」? –
@JaromandaX是的,這是正確的。該事件被成功解僱。這是一組更大的代碼的一部分,它試圖編寫從S3獲取的CSV文件,然後將其轉換爲Json並再次將其上傳到另一個s3存儲桶,以便可以通過另一個lambda實例將其導入到dynamoDB中。一切正常,但這一塊...... – Rymnel
你正在使用'console.log' - 是console.log輸出以某種方式可用(我不使用aws-lambda這就是爲什麼我問) - 如果是這樣,在執行fs.writeFile之前做一個console.log? –