s3.headObject键和存储桶

时间:2017-08-07 21:40:49

标签: javascript amazon-s3 aws-lambda

我正在研究一个将由S3 PUT事件调用的lambda函数,并将显示s3对象的元数据字段。我尝试将密钥和存储桶设置为变量,但是当我运行它时出现{ BadRequest: null错误。下面是我在javascript中的代码。当我对密钥和存储桶进行硬编码时,它会工作但不会传入变量,有人可以解释我做错了什么吗?谢谢!

var AWS = require('aws-sdk');
var s3 = new AWS.S3();

exports.handler = function(event, context) {

var srcbucket =  ("\'" + (event.Records[0].s3.object.key).toString() + "\'");
var srcKey =  ("\'" + (event.Records[0].s3.bucket.name).toString() + "\'");

console.log (srcKey);
    s3.headObject(
        {
            Bucket : srcbucket,
            Key: srcKey
        },
        function(err, data)
        {
            if (err)
            {
                console.log(err);
                context.done('Error', 'Error getting s3 object: ' + err);
            }
            else
            {
                var data = JSON.stringify(this.httpResponse.headers['x-amz-meta-checksum']).replace(/\"/g, "");
                console.log (data.replace(/\"/g, ""));
            }

1 个答案:

答案 0 :(得分:0)

首先,你的变量混淆了。 srcbucket是指向对象Key的指针,反之亦然。 其次,您可能希望删除应用于变量的附加引用'

var srcbucket =  event.Records[0].s3.bucket.name;
var srcKey =  event.Records[0].s3.object.key;