我正在研究一个将由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, ""));
}
答案 0 :(得分:0)
首先,你的变量混淆了。 srcbucket是指向对象Key的指针,反之亦然。
其次,您可能希望删除应用于变量的附加引用'
。
var srcbucket = event.Records[0].s3.bucket.name;
var srcKey = event.Records[0].s3.object.key;