Node.js AWS Lambda不一致s3.putObject上传大数据对象

Node.js AWS Lambda不一致s3.putObject上传大数据对象,node.js,amazon-web-services,amazon-s3,aws-lambda,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,下面是我用来读取表并将结果上传到S3的Lambda代码: 'use strict'; const pg = require('pg'); const aws = require('aws-sdk'); const awsParamStore = require( 'aws-param-store' ); exports.handler = async function (context) { function putObjectToS3(bucket, key, data){

下面是我用来读取表并将结果上传到S3的Lambda代码:

'use strict';

const pg = require('pg');
const aws = require('aws-sdk');
const awsParamStore = require( 'aws-param-store' );

exports.handler = async function (context)
{    

function putObjectToS3(bucket, key, data){
    var s3 = new aws.S3();
        var params = {
            Bucket : bucket,
            Key : key,
            Body : data
        }
        s3.putObject(params, function(err, data) {
          if (err) console.log(err, err.stack); // an error occurred
          else     console.log(data);           // successful response
        });
}

context.callbackWaitsForEmptyEventLoop = false;

var dbname = 'pg_db';
var milliseconds = (new Date).getTime();
var fileName = 'process_log_' + milliseconds.toString() + '.json';

let parameter = awsParamStore.getParameterSync(process.env.ParameterPath);

var client = new pg.Client(parameter.Value + '/' + dbname);
await client.connect();

const { rows } = await client.query('SELECT * FROM public.mytable LIMIT ' + process.env.LimitRes.toString() + ';');    
client.end();

var json = JSON.stringify(rows);

putObjectToS3('mybucket', 'thefile.json', json);

//return JSON.stringify(rows); << verified that there are actually 10,000 rows of data 
//return json; << verified that the json is valid.
//return rows.length; << 10,000 count    
};
“严格使用”;
常数pg=需要('pg');
const aws=require('aws-sdk');
const awsParamStore=require('aws param store');
exports.handler=异步函数(上下文)
{    
函数putObjectToS3(存储桶、键、数据){
var s3=新的aws.s3();
变量参数={
桶:桶,
钥匙:钥匙,
正文:数据
}
s3.putObject(参数、函数(错误、数据){
if(err)console.log(err,err.stack);//发生错误
else console.log(数据);//响应成功
});
}
context.callbackhaitsforemptyeventloop=false;
var dbname='pg_db';
var毫秒=(新日期).getTime();
var fileName='process_log_'+毫秒.toString()+'.json';
让参数=awsParamStore.getParameterSync(process.env.ParameterPath);
var client=new pg.client(parameter.Value+'/'+dbname);
等待client.connect();
const{rows}=wait client.query('SELECT*FROM public.mytable LIMIT'+process.env.LimitRes.toString()+';');
client.end();
var json=json.stringify(行);
putObjectToS3('mybucket','thefile.json',json);

//返回JSON.stringify(rows);这看起来像是一个异步问题。我认为处理程序需要从
s3.putObject()返回承诺和回调函数
需要解决或拒绝它…但我是一个老古董,到目前为止,仍然编写带有嵌套延续的常规异步代码,没有承诺。请参阅中的片段是的,我昨晚看到了问题,putObject必须返回承诺并等待。谢谢!