Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js AWS Lambda函数将json加载到s3存储桶不工作_Node.js_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Node.js AWS Lambda函数将json加载到s3存储桶不工作

Node.js AWS Lambda函数将json加载到s3存储桶不工作,node.js,amazon-web-services,amazon-s3,aws-lambda,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,当我运行这个函数时,它说它成功了,但是文件不在s3存储桶中 var AWS = require('aws-sdk'); exports.handler = (event, context, callback) => { AWS.config.update({ region: 'us-west-2', accessKeyId: 'xxx', secretAccessKey: 'xxx' }); var s3 = ne

当我运行这个函数时,它说它成功了,但是文件不在s3存储桶中

var AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {

    AWS.config.update({
        region: 'us-west-2',
        accessKeyId: 'xxx',
        secretAccessKey: 'xxx'
    });

    var s3 = new AWS.S3();

    s3.putObject({
        Bucket: 'mybucket',
        Key: 'test.json',
        Body: [{test: 'test'}, {test: 'test'}],
        ContentType: "application/json"
    }, function(){});

    context.succeed('SUCCESS');
};

NodeJs是一种有趣的语言

大多数语言都会这样处理代码

  • AWS.config.update({..})
  • 变量s3=
  • s3.putObject(..,回调);(这需要时间,因此需要等待完成)
  • context.success(…)
  • 节点js将按此顺序处理

  • AWS.config.update({..})
  • 变量s3=
  • s3.putObject(..,回调);(这需要时间,因此我将进入下一步)
  • context.success(…)
  • s3.putObject(..,回调)已完成。我现在就给你回电话
  • 回调(err,res)。它调用带有错误的回调。因为您的程序有一个空回调函数(){},所以它不会处理任何错误,您也不会知道 ^回调将告诉lambda脚本已经结束。 它现在将这样处理

  • AWS.config.update({..})
  • 变量s3=
  • s3.putObject(..,回调);(这需要时间,但没有其他步骤,因此我将等待)
  • s3.putObject(..,回调)已完成。我现在就给你回电话
  • 回调(err,res)。它调用带有错误的回调。您将打印错误并能够调试程序
  • 回调(err,'processed')将结束lambda
    NodeJs是一种有趣的语言

    大多数语言都会这样处理代码

  • AWS.config.update({..})
  • 变量s3=
  • s3.putObject(..,回调);(这需要时间,因此需要等待完成)
  • context.success(…)
  • 节点js将按此顺序处理

  • AWS.config.update({..})
  • 变量s3=
  • s3.putObject(..,回调);(这需要时间,因此我将进入下一步)
  • context.success(…)
  • s3.putObject(..,回调)已完成。我现在就给你回电话
  • 回调(err,res)。它调用带有错误的回调。因为您的程序有一个空回调函数(){},所以它不会处理任何错误,您也不会知道 ^回调将告诉lambda脚本已经结束。 它现在将这样处理

  • AWS.config.update({..})
  • 变量s3=
  • s3.putObject(..,回调);(这需要时间,但没有其他步骤,因此我将等待)
  • s3.putObject(..,回调)已完成。我现在就给你回电话
  • 回调(err,res)。它调用带有错误的回调。您将打印错误并能够调试程序
  • 回调(err,'processed')将结束lambda 您可以使用Q或NodeJs承诺按所需顺序处理任务

    您可以使用Q或NodeJs承诺按所需顺序处理任务

    var AWS = require('aws-sdk');
    
    exports.handler = (event, context, callback) => {
    
    AWS.config.update({
       region: 'us-west-2',
       accessKeyId: 'xxx',
       secretAccessKey: 'xxx'
    });
    
    var s3 = new AWS.S3();
    s3.putObject(
        {
          Bucket: 'mybucket',
          Key: 'test.json',
          Body: [{test: 'test'}, {test: 'test'}],
          ContentType: "application/json"
        },
    function(err, res){
        if(err){
             console.log(err);
         }
         callback(err, "processed");
    });
    };