私のラムダが私のCSVアップロードでうまくいかない理由を理解できませんでした。他のラムダ関数で私のラムダがS3アップロードでタイムアウトしています
var AWS = require('aws-sdk');
var mysql = require('mysql');
var json2csv = require('json2csv');
exports.handler = function (event, context) {
AWS.config = {
region: 'us-east-1',
apiVersions : {
s3: '2006-03-01'
}
};
var s3 = new AWS.S3({signatureVersion: 'v4'});
var bucket = 'search-dev';
if(event.debug == true)
{
var connection = mysql.createConnection({
host : event.database.host,
user : event.database.user,
password : event.database.pwd,
database : event.database.name
});
}
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
context.fail(err);
}
});
mysqlData();
connection.end();
function mysqlData() {
connection.query('SELECT id, keywords, result_count FROM keyword WHERE result_count != ""', function (err, results, fields) {
if (err) {
console.error('error connecting: ' + err.stack);
context.fail(err);
}
console.log(results.length + " trouvés");
var csvFields = [];
for (var i in fields) {
csvFields.push(fields[i].name);
}
var csv = json2csv({ data: results, fields: csvFields });
writeInFile(csv);
});
}
function writeInFile(dataCsv)
{
filename = generateFilename();
var params = {
ACL: 'public-read',
Bucket: bucket,
Key: filename+'.csv',
Body: dataCsv
};
s3.upload(params, function (err, data) {
if (err) {
console.error(err, err.stack); // an error occurred
context.fail(err);
}
context.succeed({url: data.Location});
});
}
function generateFilename()
{
var date = new Date();
var filename = date.getDate()+'-'+date.getMonth()+'-'+date.getFullYear()+'_'+date.getHours()+':'+date.getMinutes()+':'+date.getSeconds();
return filename;
}
};
、問題はありませんが、ここでは、それは私のs3.uploadラムダとのすべての時間のタイムアウトがIAMにS3FullAccessを持っています。
このコードは、ローカルで完全に動作します。
その他の問題は新しいバケットを作成しましたが、ローカルにアップロードすることは不可能[NoSuchBucket: The specified bucket does not exist]
他のバケットを作成してアップロードするのは問題ではないのでわかりません。
ありがとうございました