0

我正在尝试使用无服务器框架编写我的第一个 lambda 函数,该框架会将文件从texts/文件夹复制到target/名为s3-trigger-serverless-test. 但是,在调用该listObjects()函数时,我收到以下错误:

TypeError: Cannot read property 'Contents' of null
    at Response.<anonymous> (/var/task/src/handler.js:14:12)
    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:364:18)
    at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:683:14)
    at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:685:12)

处理程序.js:

var AWS = require('aws-sdk');
var bucketName = 's3-trigger-serverless-test';
var oldPrefix = 'texts/';
var s3 = new AWS.S3({params: {Bucket: bucketName}});

module.exports.copyFilesToS3 = (event, context, callback) =>  {
    s3.listObjects({Bucket: bucketName, Prefix: oldPrefix}, function(err, data) {
        if (data.Contents.length) {           // this line results in the error above

无服务器.yml:

functions:
  copyFilesToS3:
    handler: src/handler.copyFilesToS3
    events:
      - s3: 
          bucket: s3-trigger-serverless-test
          event: s3:ObjectCreated:*
          rules:
            - prefix: 'texts/'

正如另一个 stackoverflow 答案所建议的,aws-sdk 版本是最新的。我在想这可能是因为我传入的 Bucket 和 Prefix 参数listObjects()没有从 S3 存储桶返回任何数据,但是我已经尝试过其他参数和存储桶设置,但我一直无法提出有一个解决方案呢。

提前致谢

4

0 回答 0